Re: [問題] 完全不知道解釋的一段碼

看板C_and_CPP (C/C++)作者 (殺拉頂)時間12年前 (2013/12/17 01:54), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串3/3 (看更多)
※ 引述《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
你覺得 sizeof(int[2]) 是什麼意思?
12/17 02:18, 1F

12/17 13:02, , 2F
b 的型別是 a[3]
12/17 13:02, 2F

12/17 13:03, , 3F
a 的型別是 char[2]
12/17 13:03, 3F

12/17 13:35, , 4F
樓上不太對: 應該說 a 就是 char[2], b 就是 a[3]
12/17 13:35, 4F

12/17 13:36, , 5F
這裡用的是 typedef, 所以不是變數定義, 講"a的型別"就很怪
12/17 13:36, 5F

12/17 13:37, , 6F
反倒是 xd 才能說"xd的型別" 這也是原 PO 的問題點所在
12/17 13:37, 6F

12/18 03:22, , 7F
謝謝大家~ 那我上面文章理解的正確囉?
12/18 03:22, 7F
文章代碼(AID): #1IhpuwBY (C_and_CPP)
文章代碼(AID): #1IhpuwBY (C_and_CPP)