一个数组,定义是 int *p[2]={a,b}; 其中a ,b为一维数组。问&p[0]得到什么。。

比如 a,b的定义是int a[10],b[10];我有两个理解。&p[0]根据运算顺序,先算p[0] 那得到结果就是a,在对a取地址,就是&a;第二种理解&p[0]就是数组首元素的地址,那也就是p的地址。工具跑出来是第二种结果,可我不明白第一种解释错在哪里。。。。

这个要自己构造个模拟的内存图,比如a数组首元素地址在100,b首元素地址在200,注意是地址;
*p[2]这个指针数组,在int *p[2]={a,b};则装进100,200,针对p数组、直接p[0]取出的就是100这个地址,而p[1]则取出200.
现在,*p[0]就相当与取出a数组的第0个元素,而*(p[0]+1)就相当于取出a中第一个元素;
当然*(p[1]+5)就是取出b中的第5个元素。
不知道你看明白没?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-08
*p(0)中存放的是a[]的地址,也就是a[0]的地址。对吗?
相似回答