c语言结构体(struct)
C语言的结构体(struct)从本质上讲自定的数据类型,只不过这种数据类型比较复杂,是由int、float、char等基本数据类型组成。是一种聚合数据类型。
在实际开发中,我们可以将一组类型不同,但是用来描述同一件事物的变量放到结构体中。比如:学生有名字、年龄、身高、成绩等多个属性。使用结构体之后,就不需要零散定义多个变量,可以将他们都放到结构体中。
结构体的定义
基本格式
struct 结构体名{
结构体所要包含的数据类型
};
//基本定义
struct Teacher
{
char name[180];
int age;
char *job;
};
//1.定义多个结构体变量用逗号隔开
struct Teacher
{
char name[180];
int age;
char *job;
}tea1,tea2;
//2.也可以在下面用变量定义 格式 struct 结构体名 变量名
struct Teacher tea3,tea4;
注意:在定义的时候最好给个初始值不然就会出现乱码或者在结构体创建的时候就开始定义
初始赋值为0或者NULL(两种)
struct Teacher
{
char name[180];
int age;
char *job;
};
int main()
{
struct Teacher tea2 = {
.name = "", .age = 0, .job = NULL}; // 初始化
printf("%s %d %s\n", tea2.name, tea2.age, tea2.job);
}
------------------------------------------------------------
struct Teacher
{
char name[180];
int age;
char *job;
} stu1 = {
"", 0, NULL}, stu2; //写跟不写初始值是一样
//两种写法一样
struct Teacher
{
char name[180];
int age;
char *job;
} stu3, stu4 = {
"sss", 18, "fffff"};
int main()
{
printf("%s %d %s\n", stu1.name, stu1.age, stu1.job); //"\0" 0 NULL
printf("%s %d %s\n", stu2.name, stu2.age, stu2.job); // "" 0 NULL
printf("%s %d %s\n", stu3.name, stu3.age, stu3.job); //"" 0 NULL
printf("%s %d %s\n", stu4.name, stu4.age, stu4.job); // "sss", 18, "fffff"
struct Teacher tea2; //但是这里不给初始值就会乱码
printf("1=%s %d %s\n", tea2.name, tea2.age, tea2.job); // 乱码 0 乱码
}
清空结构体让其赋初始值
...//头文件
struct Teacher
{
char name[180];
int age;
char *job;
};
int main()
{
struct Teacher tea2;
memset(&tea2, 0, sizeof(tea2)); // 清零
// 现在可以安全地读取这些值
printf(" %s %d %s\n", tea2.name, tea2.age, tea2.job); //"\0" 0 NULL 因为清空了所以有的初始值
return 0