结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
这里只能使用结构体来描述了。
例如:
//结构体类型
struct Stu
{
//相当于盖房子时候的图纸
char name[20];//名字 --> 字符串
int age;//年龄 --> 整形
char sex[5];//性别 --> 字符串
char id[15];//学号 --> 字符串
};
void Print(struct Stu* ps)
{
//printf("%s %d %s %s\n",(*ps).name,(*ps).age,(*ps).sex,(*ps).id);
printf("%s %d %s %s\n",ps->name ,ps->age ,ps->sex ,ps->id);//比上面的方法稍简洁
//-> 结构体成员访问操作符
//用法:
//结构体指针 -> 结构体成员
}
int main()
{
//结构体变量
//相当于拿着图纸盖的房子
struct Stu s1 = { "张三",23,"女","007"};//学生1
struct Stu s2 = { "如花",18,"男","001" };//学生2
//输入结构体数据
scanf("%s %d %s %s\n", s1.name, s1.age, s1.sex, s1.id);
//直接打印
printf("%s %d %s %s\n",s1.name, s1.age, s1.sex, s1.id);
//. 结构体成员访问操作符
// 用法:
// 结构体变量.结构体成员
//使用函数打印
Print(&s2);
}
如果后面感觉写struct Stu有些麻烦,那么我们可以对struct Stu用 typedef 进行重命名
typedef struct Stu
{
//相当于盖房子时候的图纸
char name[20];//名字 --> 字符串
int age;//年龄 --> 整形
char sex[5];//性别 --> 字符串
char id[15];//学号 --> 字符串
}Stu;
如上我们就将struct Stu重命名成了 Stu
改变名字后使用方式如下:
typedef struct Stu
{
//相当于盖房子时候的图纸
char name[20];//名字 --> 字符串
int age;//年龄 --> 整形
char sex[5];//性别 --> 字符串
char id[15];//学号 --> 字符串
}Stu;
void Print(Stu* ps)
{
//printf("%s %d %s %s\n",(*ps).name,(*ps).age,(*ps).sex,(*ps).id);
printf("%s %d %s %s\n", ps->name, ps->age, ps->sex, ps->id);//比上面的方法稍简洁
}
int main()
{
Stu s1 = { "张三",23,"女","007" };//学生1
Stu s2 = { "如花",18,"男","001" };//学生2
scanf("%s %d %s %s\n", s1.name, s1.age, s1.sex, s1.id);
printf("%s %d %s %s\n", s1.name, s1.age, s1.sex, s1.id);
Print(&s2);
}