在讲完结构体的含义之后,那我们该如何去定义一个结构体呢?
2.1 结构体声明的语法
struct tag
{
member-list;
}varible-list;
符号 | 含义 |
---|---|
tag |
标签,可以理解为结构体名字 |
member-list |
成员列表,之后我们就是在这个花括号内来写我们想要存储的变量 |
varible-list |
变量列表,这个就是我们利用结构体创建之后直接给结构体变量的名称 |
注意:结构体名称和结构体变量名称是两个不一样的东西,不要给混淆了。
例如:我们描述一个学生
struct Student
{
char name[20];//姓名
int age;//年龄
char sex[5];//性别
char id[20];//学号
}; //这里有个分号,一定不要忘记写了
2.2 结构体变量的创建和初始化
struct S
{
char c;
int i;
double d;
};
struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
};
int main()
{
//按照结构体的成员顺序进行赋值
struct Stu s1 = { "张三",22,"男","123456789" };
printf("name: %s\n",s1.name);
printf("age: %d\n", s1.age);
printf("sex: %s\n", s1.sex);
printf("id: %s\n", s1.id);
printf("\n");
//按照知道指定的顺序赋值
struct Stu s2 = { .age = 18,.name = "梨花",.id = "563217485",.sex = "女"};
printf("name: %s\n", s2.name);
printf("age: %d\n", s2.age);
printf("sex: %s\n", s2.sex);
printf("id: %s\n", s2.id);
return 0;
}
除了上述在main函数内创建结构体变量的方式之外,我们还可以在面函数外面创建结构体变量,如果是这样做的话,这个变量就相当于全局变量了。
//方法一
struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
}s1,s2; //变量列表
//方法二
struct Stu s3;
int main()
{
...
}