首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关引用的小疑点

2012-04-01 
有关引用的小问题int*anewint(0)int*b&acout b \n //1cout &a \n //2cout &a \n

有关引用的小问题
int   *a   =   new   int(0);
int   *b   =   &a;
cout < <   b   < <   '\n ';     //1
cout < <   &a < <   '\n ';     //2
cout < <   &a < <   '\n ';     //3
这三个输出相等吗?为什么?

[解决办法]
1、楼主第一次贴出
int *a = new int(0);
int *b = &a;
cout < < b < < '\n '; //1
cout < < &a < < '\n '; //2
cout < < &a < < '\n '; //3
这三个输出相等吗?为什么?
2、搂主第二次贴出
写错了, 楼上的就不要再回答了,题都没看出来有错
int *a = new int(0);
int **b = &a;
cout < < b < < '\n '; //1
cout < < &a < < '\n '; //2
cout < < &a < < '\n '; //3
这三个输出相等吗?为什么?

3、搂主第三次贴出
int *pi = new int(0);
int **pii = &pi;
int **piii = &pi;
cout < < "pi " < < pi < < "\n " ;
cout < < "pii " < < pii < < "\n " ;
cout < < "piii " < < piii < < "\n " ;
pi0x00374798
pii0x0012f63c
piii0x0012f63c

如果改为
int *pi = new int(0);
//int **pii = &pi;
//int **piii = &pi;
cout < < "pi " < < pi < < "\n " ;
cout < < " &pi " < < &pi < < "\n " ;
cout < < " &pi " < < &pi < < "\n " ;
结果为
pi0x00374798
第二第三个我查&pi内存没有值为什么?

不是全一样啊, 怎么没一个人搞对, 我是想搞清楚为什么,不是要知道结果就行了,那不等于没知道吗。
**********************
大家没有给你解释清楚是因为你第一次贴错了(当然,编译器肯定会给出错误:不能将int **转换成int *)
第二次,你给出的是要打印出b,&a,&a的值,即int **类型的指针b指向的地址(*b被保存的地址或者a被保存的地址)、int *型指针a被保存的地址、int *型指针a被保存的地址。
它的输出,自然从字面就可以推出来(注意,int **b = &a;表示int **b; b = &a;)
第三次 你给出的是要打印pi,pii,piii的值(跟前面不一样呀),也就是pi指向的地址(new int(0)的内存首地址)、pii指向的地址(pi被保存的地址)、piii指向的地址(pi被保存的地址)。
**********************************************

热点排行