问题: (数组名)是首地址,那 (&数组名)得到的地址也相同 ,有(&数组名的写法吗)。
代码如下
nt main(int argc, const char * argv[]) {
int a = 3 , b = 4 ,c = 5;
int *pa[3] = {&a,&b,&c}; //创建指针数组,分别存放了abc得地址
// pa[0] = &a ,
printf("&a = %p\n",&a);
printf("&a = %p\n",pa[0]);
printf("----------------\n");
printf("pa = %p\n",pa);
printf("&pa = %p\n",&pa);
printf("&pa[0] = %p\n",&pa[0]);
//如何访问a的值
printf("*(&a),a = %d\n",*(&a));
printf("*(pa[0]),a = %d\n",*(pa[0]));
printf("**pa,a = %d\n",**pa);
printf("**(&pa),a = %d\n",**(&pa));
printf("**(&pa[0]),a = %d\n",**(&pa[0]));
return 0;
}
运行结果:
&a = 0x7fff5fbff76c
&a = 0x7fff5fbff76c
----------------
pa = 0x7fff5fbff780
&pa = 0x7fff5fbff780
&pa[0] = 0x7fff5fbff780
*(&a),a = 3
*(pa[0]),a = 3
问题点 : 按输出%p的地址来看 ,pa = &pa,&pa取到的也是指针数组的首地址,
那么*(&pa)应该等于*pa 都取到a的地址pa[0],但结果取到的是不一样的。
----
**pa,a = 3
**(&pa),a = 1606416236
-------
**(&pa[0]),a = 3
|
|