关于C++/C中&符号

时间:2023-01-30 13:59:03

今天朋友问到一个问题,例如下面的代码:

#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;
}

输出的结果为:

关于C++/C中&符号

 

 

如果把同样的文件test.cpp 改为test.c 编译的结果如下:

关于C++/C中&符号

 

编译不过,同时我将testPtr &q = p; 改为int* &q = p;  报同样的错误

 

结论:testPtr &q = p;    在C++中才合法,其中q是p的别名,所以才有上面的结果

 

补充一下在ubuntu里安装g++的过程

sudo apt-get install g++ 提示如下错误:

关于C++/C中&符号

于是按照如下解决:

<1>sudo apt-get install aptitude

<2>sudo aptitude install g++

终端中输入后会提示aptitude给出的解决方案,你可以选择no,会继续提供下一个解决方案,一般前面的方案会是忽略掉依赖冲突,所以想要彻底解决的话可以跳过前面的几种方案,然后再yes解决