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