关于数组指针 c++

对于数组int a[3][4];a的值为a[0][0]的地址;a[0]和*a的值也为a[0][0]的地址。那么为什么既然a和*a一样,那为什么**a和*a就不一样了。初学 求解释。
2026年09月25日 02:05
有3个网友回答
网友(1):

在二维数组中 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]的内容数值。

不能因为两个指针指向同一个地址,就认为这两个指针一定是同一类型的指针。

网友(2):

首先**a != *a;
**a = &(*a);
所以**a是*a指针地址的值

网友(3):

*a 是 a[0][0]的地址,**a则是读取a[0][0]的内容了~