1.结构体变量的定义与使用
♦ 定义结构体变量的方式
• 先申明结构体类型再定义变量名
struct stu //stu:结构体类型名
{
成员列表
};
struct stu Lucy; //Lucy:结构体变量名
• 在声明类型的同时定义变量
struct stu //stu:结构体类型名
{
成员列表
}Lucy,Bob; //Lucy、Bob:结构体变量名
• 直接定义结构体类型变量(无类型名)
struct //无类型名
{
成员列表
}Lucy、Bob; //Lucy、Bob:结构体变量名
• 结构体类型名:指定了一个结构体类型,它相当于一个模型,但其中并无具体数据,系统对之也不分配实际的内存单元。
• 结构体变量名:实际分配空间——为了能在结构体中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。
♦ 比较推荐的写法
typedef struct stu
{
成员列表
}STU; //使用typedef重新定义一个结构体类型名
STU Lucy,Bob; //使用STU去定义相应的对象
类型与变量分开定义,当一个结构体类型有多个文件需要使用时,可以将类型定义放在放在一个.h文件中,需要使用的文件包含相应的头文件即可。
♦ 注意事项:
1.结构体变量成员必须单独使用:结构体变量名.成员名
例如:Lucy.num = 101;
scanf("%c",&Lucy.sex);
printf("%s\n",Lucy.name);
2.具有相同类型的结构体变量可以相互赋值,多用于结构体成员整体操作(排序等)
例如:Bob = Lucy;
3.结构体可以在定义的时候进行初始化
例如:STU Lucy = {12,"hello",\'m\'};
4.允许嵌套定义结构体变量,成员引用多级引用
例如:Lucy.birthday.month = 12;
#include <stdio.h> typedef struct stu { int num; char name[10]; char sex; }STU; int main(int argc,char *argv[]) { STU boy1,boy2,girl = {15,"lucy",\'w\'}; printf("input boy2 num name sex:"); scanf("%d %s %c",&boy2.num,boy2.name,&boy2.sex); boy1 = boy2; printf("boy1.num = %d,boy1.name = %s,boy1.sex = %c\n",boy1.num,boy1.name,boy1.sex); printf("boy2.num = %d,boy2.name = %s,boy2.sex = %c\n",boy2.num,boy2.name,boy2.sex); printf("girl.num = %d,girl.name = %s,girl.sex = %c\n",girl.num,girl.name,girl.sex); return 0; }