结构体是一种构造数据类型
有三种形式:数据类型、结构体类型(struct)、共用体类型(union)
一般形式:
struct [结构体名]
{
类型标识符 成员名;
类型标识符 成员名;
…
};//牢记还有一个分号
1、基本结构体
1.1、定义结构体类型变量的3种方法
1.1.1、先定义结构体类型+再定义变量名
例题:
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
struct student stu1,stu2;
1.1.2、定义结构体类型+同时定义结构体类型变量
例题:
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
1.1.3、直接定义结构体类型变量
例题:
struct
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
1.2、结构体变量的初始化
格式:结构体类型 结构体变量名={初始值表 };
方法一:
struct student
{ char name[10];
int age;
float score[5],ave;
}stu={“ZhangJin”,20,78,92,83,75,69};
方法二:
struct student
{ char name[10];
int age;
float score[5],ave;
};
struct student
stu={“ZhangJin”,20,78,92,83,75,69};
1.3、结构体变量的引用
1.3.1、结构体类型数据成员的引用
引用规则:结构体变量出同类型赋值外,不能整体引用,只能引用变量成员
引用方式: 结构体变量名.成员变量
stu.name = “ZhangJin”;
1.3.2、求结构体类型数据的字节数
sizeof(变量名或类型名);
1.3.3、嵌套结构体中成员的引用
结构体嵌套时,逐级引用
struct student
{
int num;
char name[20];
struct date
{ int month;
int day;
int year;
}birthday;
}stu1,stu2;
//给出生日期的年份赋值
stu1.birthday.year = 1999;
2、结构体数组
2.1 结构体数组的定义及初始化
2.1.1结构体数组的定义,与定义结构体类型变量很类似,也有三种形式
形式一:
struct student
{ int num;
char name[20];
char sex;
int age;
};
struct student stu[2];
形式二:
struct student
{ int num;
char name[20];
char sex;
int age;
}stu[2];
形式三:
struct
{ int num;
char name[20];
char sex;
int age;
}stu[2];
2.1.2 结构体数组的引用
struct student
{ int num;
char name[20];
char sex;
int age;
}str[3]={{10,”XiaoWang”,’,M’,20}};
str[1]=str[0];
2.1.3、结构体数组元素成员的引用
引用方式: 结构体数组名[下标].成员名
struct student
{ int num;
char name[20];
char sex;
int age;
}str[3];
stu[1].age++;
strcpy(stu[0].name,”ZhangSan”);
3、结构体和指针
3.1 结构体指针变量的定义
定义形式:struct 结构体名 *结构体指针名;
struct student * p;
//此时指针变量*p中存放的是–结构体变量在内存的起始地址
//例:
struct student
{ int num;
char name[20];
char sex;
int age;
}stu;
struct student *p=&stu;
3.2 结构体指针变量的引用
使用结构体指针变量引用成员形式
(*结构体指针变量名).成员名 <=> 结构体指针变量名->成员名 <=> 结构体变量名.成员名
例题:
int n;
int *p = &n;
*p = 10; <=> n = 10;
struct student
{
long int num;
char name[20];
char sex;
float score;
}stu1;
struct student *p = &stu1;
stu1.num=101; <=> (*p).num=101; <=> p->num=101;
文章来源:https://blog.csdn.net/u014455929/article/details/52552365
感谢博主的博客,让我们有学习的机会!谢谢!推荐>>>