《2017年11月4日》【连续025天】
标题:学习结构(struct);
内容:A.观看MOOC10.1;
B.可用“struct”来定义一个“结构”,就是定义了一个新的数据类型;
struct 结构名
{
类型名 成员变量名;
类型名 成员变量名;
.................
};
例: struct Student {
unsigned ID;
char szName[20];
float fGPA;
};
Student 即成为自定义类型的名字,可以用来定义变量;
Student s1,s2;
两个同类型的结构变量,可以相互赋值;
一般地,一个结构变量所占的内存空间的大小,就是结构中所有变量大小之和。且各个成员变量在内存中一般是连续存放;
如上文的Student变量为28字节(ID4字节,szName20字节,fGPA4字节)
一个结构的成员变量可以是任何类型的,包括另一个结构类型:
struct Date{
int year;
int month;
int day;
};
struct StudentEx{
unsigned ID;
char szName[20];
float fGPA;
Date birthday;
};
结构的成员变量可以是指向本结构类型的变量的指针
struct Employee {
string name;
int age;
int salary;
Employee *next;
};
访问结构变量的成员变量:
结构变量名.成员变量名
例:StudentEx stu;
cin>>stu.fGPA;
stu.ID=12345;
strcpy(stu.szName,"Tom");
cout<<stu.fGPA;
stu.birthday.year =1984;
unsigned int*p =&stu.ID; //p指向stu中ID成员变量
结构变量可以在定义时进行初始化:
StudentEx stu ={1234,"Tom",3.78,{1984,12,28}};
结构数组:
StudentEx MyClass[50] ={{1234,"Tom",3.78,{1984,12,28}},{1235,"Jack",3.25,{1985,12,23}}};
MyClass[1].ID =1267;
MyClass[2].birthday.year=1986;
int n=MyClass[2].birthday.month;
cin >>MyClass[0].szName;
定义指向结构变量的指针:
结构名*指针变量名;
通过指针,访问其指向的结构变量的成员变量;
指针->成员变量名 或: (*指针).成员变量名
例:StudentEx Stu;
StudentEx*pStu;
pStu =&Stu;
pStu->ID=12345;
(*pStu).fGPA=3.48;
cout<<Stu.ID<<endl;
cout<<Stu.fGPA<<endl;
明日计划:学习全局变量,局部变量,静态变量;