定义结构体类型变量
1. 先声明结构体,再定义该类型的变量(常用)
声明结构体:
struct Student
{
int num; // 学号为整型
char name[20]; // 姓名为字符串
char sex; // 性别为字符型
int age; // 年龄为整型
float score; // 成绩为实型
char addr[30]; // 地址为字符串
}; // 注意最后有一个分号
定义类型的变量:
Struct Student student1, student2;
结构体类型名 结构体变量名
2.在声明类型的同时定义变量
struct Student
{
int num; // 学号为整型
char name[20]; // 姓名为字符串
char sex; // 性别为字符型
int age; // 年龄为整型
float score; // 成绩为实型
char addr[30]; // 地址为字符串
}student1,student2;
3.不指定类型名而直接定义结构体类型变量
struct
{
int num; // 学号为整型
char name[20]; // 姓名为字符串
char sex; // 性别为字符型
int age; // 年龄为整型
float score; // 成绩为实型
char addr[30]; // 地址为字符串
}student1,student2;
结构体变量的初始化和引用
栗子1:
把一个学生的信息(包括学号、姓名、性别、住址)放在一个结构体变量中,然后输出这个学生的信息
# include<stdio.h>
int main()
{
struct Student
{
long int num;
char name[20];
char sex;
char addr[20];
} a={10101, "Li Lin",'M',"123 Beijing Road"};
printf("NO.:%ld\nname:%s\nsex:%c\naddress:%s\n",a.num,a.name,a.sex,a.addr);
return 0;
}
对某一成员初始化
struct Student b={.name="zhang Fang"}; //在成员名前有成员运算符"."
".name"
隐含代表结构体变量b中的成员 b.name
。 其他未被指定初始化的数值型成员被系统初始化为0,字符型成员被系统初始化为'\0'
,指针型成员被系统初始化为 NULL
引用结构体变量中成员的值
结构体变量.成员名
student1.num=10010;
栗子2:
输入两个学生的学号、姓名,成绩,输出成绩较高的学生的学号、姓名,成绩
# include<stdio.h>
int main()
{
struct student
{
int num;
char name[20];
float score;
}student1,student2;
scanf("%d%s%f",&student1.num,student1.name,&student1.score);
scanf("%d%s%f",&student2.num,student2.name,&student2.score);
printf("The high score is:\n");
if(student1.score>student2.score)
printf("%d %s %6.2f\n", student1.num,student1.name,student1.score);
else if(student1.score<student2.score)
printf("%d %s %6.2f\n", student2.num,student2.name,student2.score);
else
{
printf("%d %s %6.2f\n", student1.num,student1.name,student1.score);
printf("%d %s %6.2f\n", student2.num,student2.name,student2.score);
}
return 0 ;
}