结构
用“struct”关键字来定义一个“结构”也就定义了一个新的数据类型:
struct 结构名
{
类型名 成员变量名;
类型名 成员变量名;
类型名 成员变量名;........};
struct Student{
unsigned ID;
char szName[20];
float fGPA;
};
Student 即成为自定义类型的名字,可以用来定义变量
Student s1,s2;
例两个同类型的结构体变量,可以相互赋值。但是结构体变量之间不能用“==”,“!=”,“<",">","<=",">="进行比较运算。
一般来说,一个结构体变量所占的内存空间的大小,就是结构体中所有成员变量大小之和。结构变量中的各个成员变量在内存中一般是连续存放的,
struct Student{
unsigned ID;
char szName [20];
fioat fGPA;};
一个结构体的成员变量可以是任何类型,包括可以是另一个结构体类型
struct Date{
int year;
int month;
int day;
};
struct StudentEx{
unsigned ID;
char szName[20];
float fDPA;
Date birthday;
};
结构的成员变量可以是指向本结构类型的变量的指针
struct Employee{
string name;
int age;
int salary;
Employee*next;
};
访问结构变量的成员变量
一个结构变量的成员变量,可以完全和一个普通变量一样来使用,也可以取地址。
结构变量名.成员变量名
studentEx stu;
cin>>stu.fGPA;
stu.ID=12345;
strcpy(stu.szName,"Tom");
cour<<stu.fGPA;
stu.birthday.year=1983;
unsigned int *p=&stu.ID; //p指向stu中的ID成员变量
结构变量可以在定义时进行初始化:
student Ex stu={1234,"Tom",3.78,{1893,12,23}};
结构数组
例:StudentEx MyClass[50];
StudentEx MyClass[50]={{1234,"Tom",3.78,{1893,12,23}},
{1234,"Jack",3.45,{1894,12,23}},
..............................};
指向结构变量的指针
定义指向结构变量的指针
结构名*指针变量名;
studentEx*pStudent;
studentEx Stu1;
pStudent=&Stu1;
studentEx Stu2=*pStudent;
通过指针,访问其指向的结构变量的成员变量:
指针->成员变量名或(*指针).成员变量名