//test.c
struct ccc{
int t;
};
struct abc{
int a;
int b;
int c;
struct ccc dd;
};
int main(int argc, char * argv[]){
struct abc xx,yy;
xx.a=1;
xx.b=2;
xx.c=3;
xx.dd.t=4;
yy=xx;
return 0;
}
结果在gcc上不带任何选项编译通过,带-std=c89或-ansi用89规范和ansi规范而不打开gcc扩展仍然编译通过,通过GDB查看,发现赋值的确是针对值的,而不是改变了变量指针。然后在VC2005上也能够编译通过并运行,看来C89和ANSI规范中的确已允许C语言中对结构体变量进行赋值,老谭的书应该修正一下了。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




