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

看板C_and_CPP (C/C++)作者 (永遠睡不著 @@)時間12年前 (2013/12/17 00:22), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《saladim (殺拉頂)》之銘言: : 在某人的網頁看到這段code, 原作者請原諒我 但是我想破頭無法解釋 : 真的很好奇這段code該怎麼解釋 所以po在這請問大家..... : : 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]) 搞混了? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.217.49

12/17 00:55, , 1F
主要癥結點在於那個名字是變數還是型別
12/17 00:55, 1F

12/17 00:56, , 2F
這裡的 b 全部都是型別所以 b[0] 什麼的就是陣列型態
12/17 00:56, 2F

12/17 00:56, , 3F
如果宣告 b c[2]; 那 sizeof(c[0]) 就也會是 6 了
12/17 00:56, 3F
文章代碼(AID): #1IhoYton (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1IhoYton (C_and_CPP)