C里面何时出了对结构体赋值的支持的?
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。 |
记得当年在学老谭的那本C语言的书的时候,书中明确说两个结构体变量间赋值需通过对结构体内各个变量的复制来进行,而不能直接用=号来赋值。今天我还笑话了一把实验室同学的无知,结果在gcc中写了一段代码,真的可以对结构体变量直接复制,代码如下: //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语言中对结构体变量进行赋值,老谭的书应该修正一下了。 本文出自 “Nathan的技术空间” 博客,转载请与作者联系! 本文出自 51CTO.COM技术博客 |



nathanxu
博客统计信息
热门文章
最新评论
友情链接
