Re: [問題] 2D array的address

作者: KanzakiHAria (神崎・H・アリア)   2018-04-23 12:50:37
《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];
作者: Lipraxde (Lipraxde)   2018-04-23 19:54:00
b[0] ← 這樣用很糟糕是因為a不是陣列的關係?這樣做動態陣列不就頗麻煩的
作者: LPH66 (-6.2598534e+18f)   2018-04-24 02:55:00
這是在 int *b = &a; 之下的建議, 動態陣列是不一樣的東西這其實正是「指標不等於陣列」的真意:它底下是什麼東西就要用什麼介面去存取當 b 是指向一個變數時用 * 存取, 指向陣列開頭時才用 []
作者: Lipraxde (Lipraxde)   2018-04-24 10:20:00
原來是在說這個啊,感謝

Links booklink

Contact Us: admin [ a t ] ucptt.com