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