关于数组指针 c++

对于数组
int a[3][4];
a的值为a[0][0]的地址;
a[0]和*a的值也为a[0][0]的地址。
那么为什么既然a和*a一样,那为什么**a和*a就不一样了。
初学 求解释。

在二维数组中 a 和 a[0](或a[1],a[2])都是指针,但不是同一种类型的指针。a是指向一个数组的指针,而a[0]是指向一个整数的指针。这是不同类型的指针。

a 表示的是 a[0]的首地址,即*a = a[0],
而a[0]的内容还是一个地址,是a[0][0]的地址。
**a = *(a[0]) = a[0][0],是a[0][0]的内容数值。

不能因为两个指针指向同一个地址,就认为这两个指针一定是同一类型的指针。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-17
首先**a != *a;
**a = &(*a);
所以**a是*a指针地址的值
第2个回答  2012-08-16
*a 是 a[0][0]的地址,**a则是读取a[0][0]的内容了~
相似回答