读书人

数组与指针,该如何解决

发布时间: 2012-02-09 18:22:27 作者: rapoo

数组与指针
请问对于一个 数组 int array[3][4][5];

下面这几个值相等应该怎么解释? 谢谢!

cout < < "array " < <array < <endl;
cout < < "array[0] " < <array[0] < <endl;
cout < < "array[0] " < <&array[0] < <endl;
cout < < "array[0] " < <array[0][0] < <endl;
cout < < "array[0] " < <&array[0][0] < <endl;
cout < < "array[0] " < <&array[0][0][0] < <endl;

[解决办法]
都是整个数组的第一个位置指针啦

[解决办法]
你要理解
a[i][j][k]相当于*( *( *( *a+i )+j ) +k )
所以多重数组
***a = **a = *a = a
[解决办法]
数组名可表示数组的首地址
[解决办法]
他们的实际值是一样的,只是类型不同

[解决办法]
都是一样的,都是显示第一个元素的地址!
数组本来就可以看成是指针地址!!

[解决办法]
全部是数组首元素地址
[解决办法]
int array[3][4][5];

这个的内存假想空间是三维的. 3 * 4 * 5 就是总大小.
但是实际上内存地址并不是三维的,而是一条直线, 也就是说数组最终都是用一个算法来转换成一个线性的模型.

[解决办法]
相等是很合理的
[解决办法]
他们都在描述同一个维的数据
[解决办法]
偶抽象思维不好,三维的东西头晕 ^_^

都表示起点的地址,
整个数组的起始地址

第一 * 的起始地址
第一 * 的起始地址

第一 * 第一 * 的起始地址
第一 * 第一 * 的起始地址

第一 * 第一 * 第一 * 的起始地址


读书人网 >C++

热点推荐