Re: [问题] 三维阵列?

楼主: carylorrk (carylorrk)   2014-11-21 21:01:03
※ 引述《nsysukober (安安)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: GCC
: 问题(Question):
: 想问的问题是以下
: int a[5][10][15];
: printf("%d\n", &a[2] - &a[0]);
: printf("%d\n", a[2] - a[0]);
: 第一个 printf 是 2 第二个是 20
: 我知道如果只有a[2]是指"值",但目前是只有宣告但没有给值,那会? 是代表什么意思?
: 如果加了 &a[2] 意思是他的位址吧? 但想很久还是没办法推出是怎么出现这两个答案的
: 对于三维阵列非常的不了解
: 谢谢哦:)
这跟三维没有什么关系,先简化成二维。
int a[5][10];
&a[2] 的 type 是 int (*)[10]
&a[2] - &a[0] 中间隔了两个 int [10],所以是 2
a[2] 的 type 是 int[10]
在这里跟当作 argument 传入 function 时一样会 decay 成 int*
a[2] - a[0] 中间隔了 2 * 10 个 int 所以是 20
以上,三维同理。
重点在于指标相减时的值并不是内存位移,而是看差几个元素
还有 array 在这里 decay 成 pointer,而不是 a[2][0] 的值。
作者: nsysukober (安安)   2014-11-21 22:31:00
我思考一下,谢谢哦 超详细的> <! 感恩

Links booklink

Contact Us: admin [ a t ] ucptt.com