DAY1 C++结构体类型初识
C和C++允许用户自己制定一种数据类型,称为结构体
举例如下:
一般形式:
struct 结构体类型名
{成员表列:类型名 成员名}
struct Student
{ int num;
char name[];
char sex;
int age;
float score;
char addr[];
};
- **注意:**花括号后的;不要弄掉了。
- 每个成员也称为结构体中的一个“域”
- 成员表列又称为“域表”
第1种:先声明结构体类型再定义变量名
Student Student1 Student2;
- 其中:Student是结构体类型名,Student1 Student2是结构体变量名
- 在C语言中,在定义结构体变量时,要在结构体类型名前面加上struct
第2种:在声明类型的同时定义变量
struct Student
{
int num;
char name[];
char sex;
int age;
float score;
char addr[];
}student1,student2;
第3种:直接定义结构体类型变量(这种方法很少用)
struct
{
成员表列
}变量名表列;
关于结构体类型:
- 只能对结构体变量中的成员赋值,不能对结构体类型赋值
- 在编译时,不会为类型分配空间,只为变量分配空间
- 结构体中的成员可以单独使用,相当于普通变量
- 成员也可以是一个结构体变量:
- 结构体中的成员名可以和程序中的变量名相同,但二者没有关系。如程序中定义的整形变量num和student中的num是两回事,互不影响。
- 可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量:student1=student2
- 可以引用一个结构体变量中的一个成员的值:student1.num表示结构体变量student1中的成员的值。引用结构体变量中成员的一般方式为:结构体变量名.成员名。例如:student1.num=100.
- 是成员运算符,他在所有的运算符中优先级最高,所以可以把student.num作为一个整体来看待,上面赋值语句的作用是将整数100赋给student变量中的整型成员num
- 如果成员本身也是一个结构体类型,则要一级一级地找到最低一级的成员:student.birthday.month
- 不能将一个结构体变量作为一个整体进行输入和输出,只能对结构体变量中的各个成员分别进行输入和输出:不可以cout<<student1;
- 结构体变量的成员可以像普通成员一样进行运算
- 可以引用结构体变量(成员)的地址:
cout<<&student1;//输出student的首地址
cout<<&student1.age;//输出student1.age的首地址
结构体变量的地址主要用作函数参数,也可以引用结构变量的地址