[C语言入门] 结构体
目录
1. 啥是结构体
2. 啥是结构体变量
3. 创建结构体变量的小细节
3.1 创建全局结构体变量(不推荐)
3.2 创建局部结构体变量(不推荐)
3.3 创建局部结构体变量Plus
4. 结构体在内存里面咋存?
1. 啥是结构体
结构体就是数据的集合,可以类比一下数组,数组是相同类型的集合;结构体对数据的异同没有任何要求;也就是说结构体是不同/相同类型的集合。
2. 啥是结构体变量
如果你学过面向对象的语言,可以把结构体变量理解为对象;如果你没有学过,那么可以把结构体理解为模版,结构体变量理解为根据模版来做的一些具体的东西;例如结构体人类,结构体变量张三,就是根据结构体人类模版来进行“制作”的具体的人。
#include <stdlib.h>
#include<string.h>
// 结构体
struct Person
{
char name[20];
};
int main()
{
struct Person zhangsan = {"zhangsan"}; // 结构体变量张三,是由结构体人类模版“制作”的
printf("%s",zhangsan.name);
return(0);
}
3. 创建结构体变量的小细节
3.1 创建全局结构体变量(不推荐)
我们可以在写结构体的时候顺便把结构体变量定义了,这时候的结构体变量是“全局”的,存在一些问题。
#include <stdlib.h>
// 结构体
struct Person
{
char name[20];
}p1,p2; // 全局结构体变量
3.2 创建局部结构体变量(不推荐)
虽然作用域从全局到了局部,但是写起来还是有点麻烦。
#include <stdlib.h>
// 结构体
struct Person
{
char name[20];
};
int main()
{
struct Person p1,p2;// 局部结构体变量
return 0;
}
3.3 创建局部结构体变量Plus
使用typedef 来简化创建结构体变量的流程。
#include <stdlib.h>
// 结构体
typedef struct Person
{
char name[20];
}P;
int main()
{
P p1,p2;// 局部结构体变量
return 0;
}
4. 结构体在内存里面咋存?
结构体本身在内存里面并不占用任何空间,当使用结构体创建结构体变量的时候,结构体变量占用内存空间,占用的内存空间跟结构体内的成员变量的大小总和一样。这很好理解,想象一下你拿着一个重量忽略不计的模具,此时重量为0,一旦使用这个模具制作一些“巧克力”、“冰块”,此时这些“巧克力、冰块”就有了重量。