一、结构体的定义与使用
1、定义结构体: struct 结构体名 {结构体成员列表} 例子如下:
2、创建结构体变量:
(1)struct 结构体名 变量名
(2)struct 结构体名 变量名 = {成员1值,成员2值...)
(3)定义结构题同时创建变量
ps: (1) 定义结构体时 struct不可省略,但在创建变量时可以省略
(2) 所创建的结构体变量通过“.”进行访问成员
以第三种创建变量方式为例:
struct stu
{ string name; int age; int score;}s1;
stu s1.name = "smart";
stu s1.age = 10;
stu s1.score = 99;
二、结构体数组及指针
1、结构体数组:
创建方法: struct 结构体名 数组名[数组长度]={(),(),(),...}
使用方法结合数组及结构体使用方法:
struct student arr[0].name ="smart";
2、结构体指针:
创建方法: struct student *p= &s1
解引用:cout<<"name"<<p->name;
三、结构体嵌套、结构体做函数参数及const
1、结构体嵌套
定义:struct teacher t1={struct student,...}; //嵌套结构体时,内部嵌套的结构体应当先进行定义
用值: cout<< "s1 's name :"<<t1.s1.name<<endl;
2、结构体做函数参数
(1)值传递:
void print(struct student s){};
int main{
struct student s;....创建结构体变量
print(s);
(2)地址传递
void print(struct student *p){};//struct 可以省略
int main{
struct student s;....创建结构体变量
print(&s);
值传递与地址传递的区别,同指针所讲相同,对于较大的结构体来说,值传递会占用较大的内存.将函数中的形参改为指针可以减少内存空间
3、const指令可以防止,函数地址传递时的误操作,不允许修改值 :const student * p