c语言笔记---结构体
1.什么是结构体
官方的解释是:结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。首先先举一个关于学生信息的例子,学生包括:姓名(char),性别(char),年龄(int)等信息。
2.定义,创建变量
结构体定义由关键字 struct 和结构体名组成,结构体名可自行定义。
(1)定义一个结构体
struct Student { // 结构体名//成员char name[10];int age;char gender[5];
};
注意在创建好结构体之后要加上 ;(分号)
(2)直接创建一个变量
#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
}stu;
结构体尾部创建了一个结构体变量
(3)创建好结构体后创建一个结构体变量
#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
};
struct Student stu;
(4)创建局部变量
#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
};
int main()
{struct Student stu;return 0;
}
在main中创建的是局部变量,只在main函数中有效。
(4)结构体数组
#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
}person[3]; //3个人
//可以直接初始化
#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
}person [3] = { //也可以不给长度person []{ "zhaosan",18,"男" },{ "qian",19,"男" }{ "sun",20,"男" }
};
3.初始化
(1)直接初始化
#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
};
int main()
{struct Student stu = { "zhaosan",18,"男" };return 0;
}
#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
}stu = { "zhaosan",18,"男" };
(2)逐个赋值
#include<stdio.h>
#include<string.h>
struct Student
{char name[10];int age;char gender[5];
};
int main()
{struct Student stu;strcpy(stu.name, "zhaosan");stu.age = 18;strcpy(stu.gender, "男");return 0;
}
当要赋的值超出最大长度strcpy会造成缓冲区溢出风险,可用strncpy或snprintf
4. 使用
#include<stdio.h>
#include<string.h>
struct Student {char name[10];int age;char gender[5];
}person [3] = {{ "zhaosan",18,"男" },{ "qian",19,"男" }{ "sun",20,"男" }
};
int main()
{printf("age=%d", person[0].age); //打印第一个人的年龄return 0;
}