[問題] array 負數的index問題

看板C_and_CPP (C/C++)作者 (XYX)時間15年前 (2011/02/21 14:33), 編輯推噓2(206)
留言8則, 6人參與, 最新討論串1/1
我想要問一個很奇怪的問題 就是array的index若是負數是怎樣的分配方式 假設我有一個3*3 char的array -3 -2 -1 長得是 1 {{'a','b','c'}, 2 {'d','e','f'}, 3 {'g','h','i'}} 然後我cout << array[1][-1]; // 結果是 c cout << array[1][-2]; // 結果是 b cout << array[2][-1]; // 結果是 f 結果會有以上的規律 但是若 cout << array[-2][1]; //就沒有值 我純粹是好奇到底是如何compile的 不是很懂 原始碼: #include <iostream> using namespace std; int main (void) { char array[3][3]={{'a','b','c'},{'d','e','f'},{'g','h','i'}}; cout << array[1][-1] << endl; return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.181 ※ 編輯: XYX16888 來自: 140.112.4.181 (02/21 14:33)

02/21 14:36, , 1F
array[1][-1] = *( *(array+1) + (-1) );
02/21 14:36, 1F

02/21 14:39, , 2F
瞭解多維陣列在記憶體的存放方式後就會懂了
02/21 14:39, 2F

02/21 14:48, , 3F
負的.....我覺得可以發展虛數的陣列
02/21 14:48, 3F

02/21 15:19, , 4F
會RE (無誤
02/21 15:19, 4F

02/21 17:06, , 5F
row major,Array在記憶體中的排列順序是
02/21 17:06, 5F

02/21 17:07, , 6F
(0,0)->(0,1)->....(0,n-1)->(1,0)->......
02/21 17:07, 6F

02/21 17:08, , 7F
所以array[1][-1]會是array[1][0]的前一項
02/21 17:08, 7F

02/23 19:40, , 8F
竟然不會RE...這有定義喔
02/23 19:40, 8F
文章代碼(AID): #1DOWT2Sd (C_and_CPP)
文章代碼(AID): #1DOWT2Sd (C_and_CPP)