一、结构体与结构体的声明
1.定义:C++允许用户定义一种新的数据类型,把属于同一事物的若干个相关数据构成一个整体,统一管理,新的数据类型称为结构体。
2.声明形式:
struct 结构体类型名
{
数据类型 成员1;
数据类型 成员2;
~ ~ ~ ~ ~
数据类型 成员n;
};
例:
struct student
{
int num;
char name[20];
char sex;
};
二、结构体类型变量
1.定义结构体类型变量
(1)先声明在定义
struct student
{
int num;
char name[20];
char sex;
};
student stu1,stu2;
(2)声明的同时去定义
struct student
{
int num;
char name[20];
char sex;
} stu1,stu2;
(3)直接定义
struct
{
int num;
char name[20];
char sex;
} stu1,stu2;
//这种形式声明的结构体无类型名,不能再去定义新的变量
注意:
(1)结构体变量的成员也可以是一个结构体变量(结构体的某一成员数据类型是另一结构体的类型);
(2)结构体变量可以在定义时初始化
struct student
{
int num;
char name[20];
char sex;
} stu1={407,"ChenDan",'M'};
//或者声明在前 student stu1={407,"ChenDan",'M'};
(3)不完全初始化余下成员值为0
2.结构体变量的引用
除了在定义的时候初始化,结构体变量不可以整体赋值
struct student
{
int num;
char name[20];
char sex;
} stu1,stu2;
stu1={407,"ChenDan",'M'} //错误
cout<<stu1; //错误
引用结构体变量的形式是:结构体变量名.成员名
正确赋值:
stu1.num=407;
strcpy(stu1.name,"ChenDan");
stu1.sex='M';
三、结构体数组和指针
(1)结构体数组及初始化
结构体数组的定义方法与结构体类型变量相似。
struct student
{
int num;
char name[20];
char sex;
};
student num[3]={{222,"Xiatiya",'M'},{333,"AnNiYa",'M'},{111,"ChenYi",'F'}};
2.结构体变量的指针
(1)
定义形式:结构体类型名 * 指针变量名;
struct student
{
int num;
char name[20];
char sex;
} stu1={407,"ChenDan",'M'};
studet *p;
p=&stu;
(2)指针引用结构体变量的成员有两种形式
(*指针名).成员名
例如:(*p).num 引用变量stu1的成员num
指针名->成员名
例如:p->num
注意++p->num相当于++(p->num)