有关引用的小问题
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 = π
int **piii = π
cout < < "pi " < < pi < < "\n " ;
cout < < "pii " < < pii < < "\n " ;
cout < < "piii " < < piii < < "\n " ;
pi0x00374798
pii0x0012f63c
piii0x0012f63c
如果改为
int *pi = new int(0);
//int **pii = π
//int **piii = π
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被保存的地址)。
**********************************************