鱼C论坛

 找回密码
 立即注册
查看: 786|回复: 3

[已解决]结构体问题

[复制链接]
发表于 2020-4-15 00:00:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大佬们,求教一下
当我们定义一个普通变量的时候,就会就会分配一个空间给这个变量,比如 int a;此时 a 就是有空间的。
那么定义一个结构体变量的时候,是不是也会分配一个空间个这个结构体变量;
比如:
struct std
{
        int a;
        char b;
};

主函数中:struct std p1;
那么是不是这个p1变量,系统会分配一个,int+char的大小空间给p1结构体变量。
希望大佬们解答一下疑惑,十分感觉!!!
最佳答案
2020-4-15 09:15:19
结构体相当于一种自定义变量类型
struct std
{
        int a;
        char b;
};
这是声明一种结构体类型,在声明中,确定了该类型的成员变量。
在主函数中定义(struct std p1;)给类型的变量,就和定义起来常见类型(int、float等)的变量是一样的
都会为之分配空间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-15 00:02:37 | 显示全部楼层
是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-15 09:15:19 | 显示全部楼层    本楼为最佳答案   
结构体相当于一种自定义变量类型
struct std
{
        int a;
        char b;
};
这是声明一种结构体类型,在声明中,确定了该类型的成员变量。
在主函数中定义(struct std p1;)给类型的变量,就和定义起来常见类型(int、float等)的变量是一样的
都会为之分配空间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 10:40:00 | 显示全部楼层
是的,
会分配对应的一块内存的,至于有多大就要看编译器自己的一套计算规则,
编译器会根据结构体里面的数据类型分配一定大小的内存,专业一点的术语叫做 内存对齐,
就好比
  1. struct stu
  2. {
  3.         int a;
  4.    char b;
  5. }A;
  6. void test(){

  7.   
  8.   printf("%d\n",sizeof(A));

  9. }
复制代码

我用vc6.0打印出来是8,但按照感觉上来看,这个struct的单位长度应该是4+1
通过字节对齐,使数据阅读的效率更高,好像你习惯用拼音输入法的,突然让你用五笔,你肯定不适应,但如果让把输入法切换成你习惯,那就会键字如飞,同理,内存的合理分配也会让程序运行更快
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 08:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表