Re: [問題] 完全不知道解釋的一段碼
※ 引述《Feis (永遠睡不著 @@)》之銘言:
: : code:
: : typedef char a[2];
: : typedef a b[3];
: : b xd;
: : printf("%d\n", sizeof(b));
:
: sizeof(b) == 3 * sizeof(a) = 3 * 2 * sizeof(char) = 6
:
: : printf("%d\n", sizeof(b[0]));
:
: 假設 zero length array 是合法的.
:
: sizeof(b[0]) = 0 * sizeof(b) = 0
:
: : printf("%d\n", sizeof(b[1]));
:
: sizeof(b[1]) = 1 * sizeof(b) = 6
:
: : printf("%d\n", sizeof(b[2]));
:
: sizeof(b[2]) = 2 * sizeof(b) = 12
:
: : printf("%d\n", sizeof(b[0][0]));
:
: 假設 zero length array 是合法的.
:
: sizeof(b[0][0]) = 0 * 0 * sizeof(b) = 0
:
:
: 你應該是把這個跟 sizeof(xd[0]) 搞混了?
應該是把很多東西搞混了 XDDD
看了大家的說明 理解是這樣:
b[0] , b[1] 跟一般常見的 int myArray[0] ; int myArray2[2] 一樣意思
b[x][y] 跟 int 2Darray[x][y] 同意義
這樣對嗎?
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.112.217.49
: 推 LPH66:主要癥結點在於那個名字是變數還是型別 12/17 00:55
: → LPH66:這裡的 b 全部都是型別所以 b[0] 什麼的就是陣列型態 12/17 00:56
: → LPH66:如果宣告 b c[2]; 那 sizeof(c[0]) 就也會是 6 了 12/17 00:56
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.129.9.32
→
12/17 02:18, , 1F
12/17 02:18, 1F
→
12/17 13:02, , 2F
12/17 13:02, 2F
→
12/17 13:03, , 3F
12/17 13:03, 3F
推
12/17 13:35, , 4F
12/17 13:35, 4F
→
12/17 13:36, , 5F
12/17 13:36, 5F
→
12/17 13:37, , 6F
12/17 13:37, 6F
→
12/18 03:22, , 7F
12/18 03:22, 7F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章