今天朋友问到一个问题,例如下面的代码:
#include <stdio.h> int main() { typedef int* testPtr; int i = 7; int* p = &i; printf("first time *p is %d, i is %d\n", *p, i); testPtr &q = p; printf("second time &q=p *q is %d, *p is %d, i is %d\n", *q, *p, i); *q = 70; printf("third time *q = 70 *q is %d, *p is %d, i is %d\n", *q, *p, i); return 0; }
输出的结果为:
如果把同样的文件test.cpp 改为test.c 编译的结果如下:
编译不过,同时我将testPtr &q = p; 改为int* &q = p; 报同样的错误
结论:testPtr &q = p; 在C++中才合法,其中q是p的别名,所以才有上面的结果
补充一下在ubuntu里安装g++的过程
sudo apt-get install g++ 提示如下错误:
于是按照如下解决:
<1>sudo apt-get install aptitude
<2>sudo aptitude install g++
终端中输入后会提示aptitude给出的解决方案,你可以选择no,会继续提供下一个解决方案,一般前面的方案会是忽略掉依赖冲突,所以想要彻底解决的话可以跳过前面的几种方案,然后再yes解决