”结构体定义时,结构体本身并不占用存储空间,系统并不给结构体分配存储空间。“这句话是对的吗?

是不是应该为结构体申明时,就是对的了?... 是不是应该为结构体申明时,就是对的了? 展开
 我来答
加百列windy
高粉答主

2019-07-18 · 每个回答都超有意思的
知道小有建树答主
回答量:2074
采纳率:100%
帮助的人:96.1万
展开全部

对的,结构体类型的定义只是告诉编译器该如何表示数据,但是它没有让计算机为其分配空间。结构体类型的定义就是结构体的声明,不管是定义还是申明,这句话都是正确的。

只有在结构体变量,声明的时候可以分配。要使用结构体,那么就需要创建变量,也就是结构体变量。

创建一个结构体变量:struct book library

看到这条指令,编译器才会创建一个结构体变量library,此时编译器才会按照book模板为该变量分配内存空间,并且这里存储空间都是以这个变量结合在一起的。

同时后面访问结构体变量成员的时候,就要用到结构体变量名来访问。

扩展资料:

结构体的大小通常是结构体所含变量大小的总和,但是对于结构体中比较小的成员,可能会被强行对齐,造成空间的空置,这和读取内存的机制有关,为了效率。

通常32位机按4字节对齐,小于的都当4字节,有连续小于4字节的,等到凑整,加上下一个元素超出一个对齐位置,才开始调整,比如3+2或者1+4,后者都需要另起(下边的结构体大小是8bytes)。

struct s  

{  

char a;  

short b;  

int c;  

}  

相应的,64位机按8字节对齐。

不过对齐不是绝对的,用#pragma pack()可以修改对齐,如果改成1,结构体大小就是成员变量大小的总和。

参考资料来源:百度百科--结构体

检怜南0F8
2017-09-28 · TA获得超过305个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:159万
展开全部
要想知道在何时分配内存空间,首先要知道,定义和声明的含义。定义就是具有以下明确的格式,如:连接说明符 类型说明符 变量名;而声明则比较复杂,声明包括类型的声明,变量的声明等等
而定义一个结构体一般是不分配内存,声明一个结构体变量是分配内存的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式