wht666 发表于 2020-4-15 00:00:49

结构体问题

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

主函数中:struct std p1;
那么是不是这个p1变量,系统会分配一个,int+char的大小空间给p1结构体变量。
希望大佬们解答一下疑惑,十分感觉!!!

ba21 发表于 2020-4-15 00:02:37

是的

sunrise085 发表于 2020-4-15 09:15:19

结构体相当于一种自定义变量类型
struct std
{
      int a;
      char b;
};
这是声明一种结构体类型,在声明中,确定了该类型的成员变量。
在主函数中定义(struct std p1;)给类型的变量,就和定义起来常见类型(int、float等)的变量是一样的
都会为之分配空间

4goodworld 发表于 2020-4-15 10:40:00

是的,
会分配对应的一块内存的,至于有多大就要看编译器自己的一套计算规则,
编译器会根据结构体里面的数据类型分配一定大小的内存,专业一点的术语叫做 内存对齐,
就好比
struct stu
{
        int a;
   char b;
}A;
void test(){


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

}
我用vc6.0打印出来是8,但按照感觉上来看,这个struct的单位长度应该是4+1
通过字节对齐,使数据阅读的效率更高,好像你习惯用拼音输入法的,突然让你用五笔,你肯定不适应,但如果让把输入法切换成你习惯,那就会键字如飞,同理,内存的合理分配也会让程序运行更快
页: [1]
查看完整版本: 结构体问题