[英]Multidimensional arrays and Addresses
我在c中編寫了以下代碼,只是為了檢查代碼是否會中斷:
int main(void)
{
int A [5] [2] [3];
printf("%d\n\n", A[6]);
printf("%d\n\n", &A[6][0][0]);
system("pause");
}
現在,代碼沒有中斷,這是我沒有想到的。 當我們聲明一個多維數組: int A [5][2][3]
,這在概念上並不意味着A處於其第一級是一個5個元素(0-4)的一維數組,該元素的每個元素數組本身就是2個元素的一維數組,而該數組的每個元素都是3個元素的一維數組? 如果這個概念是正確的,那么A[6][0][0]
怎么可能存在-因為在第一級中我們只有5個元素(基於0)。
任何幫助將不勝感激。
您正在訪問數組外部的位置,沒有A[6]
。 那是不確定的行為,任何事情都可能發生。
請注意, A[5]
是一個定義明確的位置(位於數組的末尾),因此獲取指向它的指針是合法的,但嘗試訪問該指針則不可行。 但是,完全沒有定義指向A[6]
或任何其他更大索引的指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.