在 C 中,以下是合法的:
int a[] = {27,2};
int *b;
int c;
b = a;
c = *b; /* c == 27 */
关键是 a 只是数组的地址,所以我可以将它分配给一个指针。为什么结构不一样,我会假设结构变量的值只是地址,因此我应该能够将它分配给指针,如下所示:
struct foo bar;
struct foo *doo;
bar.x = 0;
doo = bar; //is this legal?
doo.x = 0; //why can't I use the dot?
换句话说,如果结构变量的值只是第一个组件的地址(我想这是像数组一样的情况),上面的代码应该是合法的。