C里面何时出了对结构体赋值的支持的?

2008-02-23 05:41:22来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

记得当年在学老谭的那本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语言中对结构体变量进行赋值,老谭的书应该修正一下了。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 应用实例:VC 实现广告窗口自动关闭 (2)

下一篇: 利用纯C 实现COM