看板 C_and_CPP 關於我們 聯絡資訊
《21世紀C語言》書中提供一個直觀的看法。以解析原理來看推薦*偏右。 int a = 2; int *b = &a; int c[3]; int d[2][3][4]; 結果 a 和 *b 是 int ,同樣的邏輯 c[1] 和 d[1][2][3] 是 int 因為歷史包袱,取值的方法有一堆手段,千萬不要寫成以下任何一行的糟糕程式碼: int AAA = *c; int BBB = *(int*)(void*)d; int CCC = b[0]; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.65.143 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1524459040.A.88C.html
Lipraxde: b[0] ← 這樣用很糟糕是因為a不是陣列的關係? 04/23 19:54
對 可能造成後面的人接著寫出b[1]而產生錯誤 比*c後果更糟糕 clean code的觀念就是好的程式碼會讓後面的程式碼保持整潔 髒的程式碼會引出更多髒的程式碼 軟體工程普遍認為越多髒程式碼錯誤率越高 ※ 編輯: KanzakiHAria (114.36.67.138), 04/23/2018 21:43:51
Lipraxde: 這樣做動態陣列不就頗麻煩的 04/24 00:04
LPH66: 這是在 int *b = &a; 之下的建議, 動態陣列是不一樣的東西 04/24 02:55
LPH66: 這其實正是「指標不等於陣列」的真意: 04/24 02:55
LPH66: 它底下是什麼東西就要用什麼介面去存取 04/24 02:55
LPH66: 當 b 是指向一個變數時用 * 存取, 指向陣列開頭時才用 [] 04/24 02:56
Lipraxde: 原來是在說這個啊,感謝 04/24 10:20