手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

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

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
记得当年在学老谭的那本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语言中对结构体变量进行赋值,老谭的书应该修正一下了。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!