分享

结构体变量名本身到底代表了什么

 黄南山 2017-06-22

问:结构体变量名本身到底代表了什么?

 

比如我声明了一个结构

struct A

{

    ....

};

然后我定义两个结构体变量:

struct A aa,bb;

 

那&aa和&&bb表示变量aa和bb在内存区中的首址,这样,就可以用->或.进行操作了,比如aa.data=bb.data什么的。

但是,单单一个aa或bb本身代表什么呢?

如果有aa=bb;这个赋值语句,那又意味着什么呢? c中好像并没有规定结构体变量名代表什么吧。是memcpy(&aa,&&bb,size)吗?个人感觉应该是,但为什么呢?

我分别在tc和vc上试了,确实是memcpy(&aa,&&bb,size)这种效果。

 

 

答:

① int a = 1;

a代表一块内存区域,其中可以保存一个int型变量;a就是这块内存的名字。结构体也是一样,aa和bb也代表一个内存区域,其中保存了struct A类型变量,对aa赋值就是对aa所代表的全部内存中的内容赋值。

&aa就是aa的地址,概念是不同的。

 

② 在新的编译器下,相同类型的结构体可以直接赋值,即A = B;

在使用此特性前,建议测试一下你的编译器,同时此代码以后会不会用到其他编译平台。

否则,还是memcpy(&A1,&B1,sizeof(A1));

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多