Re: [問題] 三維陣列?

看板C_and_CPP作者 (Cary)時間9年前 (2014/11/21 21:01), 9年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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] 的值。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.244.41 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1416574865.A.C48.html ※ 編輯: carylorrk (1.34.244.41), 11/21/2014 21:12:16

11/21 22:31, , 1F
我思考一下,謝謝哦 超詳細的> <! 感恩
11/21 22:31, 1F
文章代碼(AID): #1KRpUHn8 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1KRpUHn8 (C_and_CPP)