看板 C_and_CPP 關於我們 聯絡資訊
我想要問一個很奇怪的問題 就是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)
purpose:array[1][-1] = *( *(array+1) + (-1) ); 02/21 14:36
uranusjr:瞭解多維陣列在記憶體的存放方式後就會懂了 02/21 14:39
stupid0319:負的.....我覺得可以發展虛數的陣列 02/21 14:48
Seprim:會RE (無誤 02/21 15:19
cooper6334:row major,Array在記憶體中的排列順序是 02/21 17:06
cooper6334:(0,0)->(0,1)->....(0,n-1)->(1,0)->...... 02/21 17:07
cooper6334:所以array[1][-1]會是array[1][0]的前一項 02/21 17:08
Yshuan:竟然不會RE...這有定義喔 02/23 19:40