作者XYX16888 (XYX)
看板C_and_CPP
標題[問題] array 負數的index問題
時間Mon Feb 21 14:33:35 2011
我想要問一個很奇怪的問題
就是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