看板 C_and_CPP 關於我們 聯絡資訊
int B[2][3]; B 型別可以把他想成 int (*)[3] ##### 這段有點錯誤, 不要看這段 B 是一個指標, 所以 B + 0 代表一個位址 (400), B + 1 一樣代表一個位址。 B + 0 可以寫成 B[0], 所以 B[0] 就是表示一個位址, 而不是陣列的元素 2。 ##### B[0] 等於 *(B+0) 等於 *B, 所以這 2 個是一樣的東西。 *B 就有點難解釋, int A[2], A 的型別可以想成 int*, *B 可以想成是 int*, 是代表一個指標。 ※ 引述《zzss2003 (brotherD)》之銘言: : 圖片: https://imgur.com/a/8Q7d3GH : 在這個影集當中,我不懂為什麼*B or B[0]是400,不是應該是2嗎? : &B[0][0]是400我能理解,但沒辦法理解*B與B[0],影片中也沒提到為什麼 : 自己用了GCC,compile後也是同樣結果 : 能請前輩們提供一下線索嗎?_? : 謝謝 -- 若要人前顯貴, 就要人後受罪。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.218.53.138 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1524560767.A.B05.html
zzss2003: B的型別應該是int (*)[2][3]吧? 04/24 17:29
zzss2003: 打錯了,是int [2][3] 04/24 17:30
descent: 和我舉例的 A[2] 是類似的意思 04/24 17:47
LPH66: B + 0 應該是 &B[0], 只是在這東西也是陣列之下位址會相同 04/24 18:18
KanzakiHAria: B的型別就是 int[2][3] 而不是 int*[3] 04/24 19:37
KanzakiHAria: enonrick的文章已經教過簡單的判別法 04/24 19:39
KanzakiHAria: sizeof(B) sizeof(B[0]) sizeof(B[0][0]) 04/24 19:40
KanzakiHAria: 看到連續這幾篇文章 C現在來看真的是設計不良 04/24 19:44
KanzakiHAria: 連型別都搞錯不要亂發文害人rrrrrrrrrrrr 04/24 19:49
CoNsTaR: 不是有 right-left rule 嗎? 04/25 00:14
CoNsTaR: 為什麼每次都要講得好像很複雜一樣 04/25 00:14
hunandy14: 隱式轉換之後才變成變成指標,陣列的型態是"陣列" 04/25 01:32
hunandy14: 兩者之間比較容易是別的地方是指針不帶長度資訊 04/25 01:35
hunandy14: 標 04/25 01:35
hunandy14: 識別 ((痾怎麼還有 04/25 01:36
loveflames: 陣列就是陣列,不要用指標來誤導人謝謝 04/25 09:48
loveflames: B就是int [2][3],沒有別的了 04/25 09:49
做了一些修改。 ※ 編輯: descent (61.218.53.138), 04/25/2018 11:09:36
yvb: 我想原PO誤把語意當型別, 也就是 K&R C語言 5.7 多維陣列 04/25 13:11
yvb: 後半節, 或是 C99 C11 6.5.2.1 Array subscripting 第3點 04/25 13:11
yvb: (該節Semantics第二段落) 的描述. 04/25 13:12
yvb: 對初學者來說, 也許講清楚語意更有助理解. 04/25 13:16
freef1y3: B應該是int [2][3]沒錯, 不過有一些吊詭的點 04/26 15:44
freef1y3: 1. 你不能寫 int C[2][3]; C = B; 04/26 15:44
freef1y3: 2. void f(int B[2][3]) {...} 那在f裡B會變成int(*)[3] 04/26 15:45