结构数组概念
数组的元素也可以构成结构是结构类型的,因此可以成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。
结构数组定义
定义格式:struct 结构名{
成员表列
}数组名[数组长度];
1)定义结构体的同时,定义数组。
Struct stufent{
Int age;
Char *name;
Int sno;
}stu[5];
2)先定义结构体,后定义数组
Struct student boy[5];
结构体数组的初始化和遍历
1.结构数组的初始化
1)定义结构体数组 同时初始化
Struct stufent{
Int age;
Char *name;
}stu[3]={{“ab”,15},{“王萌”,22},{“sd”,45}};
2)先定义结构体数组同时初始化
Strruct student girls[2]={{“王萌”,22},{“ad”,45}}
3)先定义后初始化
Struct studnet boy[1];
Boy[0]=(struct student)={“sd”,18};
4)先定义结构体数组,后初始化
Struct studnet boy[1];
Scanf(“%s”,boy[0].name);
Boy[0].age=28;
2结构数组的遍历
For(int i=0;i<3;i++){
Printf(“%s,%d”,boy[i].name,boy[i].age);
}
指向结构体变量的指针
一个指针变量当 用来指向一个结构变量时,称之为结构指针变量。结构指针变量中的值是所指向的结构变量的首地址。通过结构指针即可访问该结构变量,这与数组指针和函数指针是一样的。、
结构体指针
用来存放结构体变量地址的指针变量叫做结构体指针
结构体指针定义
Struct 结构体名 *指针变量名;
结构体指针的初始化
指针变量名=&结构体变量名;
Struct student{
Int age;
Char *name;
}stu1={18,”wang”};
Struct student *p=&stu1;//初始化指针
用结构体指针间接访问结构体变量的成员值
1. (*p). name;
2 p->name; //p必须是结构体指针才能这样访问成员值
结构体嵌套使用
1)成员也可以是一个结构,即构成了嵌套结构体
//结构体嵌套,结构体定义的里面有其他结构体
//结构体不可以嵌套自己类型的变量,可以嵌套指向自己这种类型的指针
Struct data{
int year;
int mouth;
int day;
};
Struct student{
Char name;
Int age;
Struct data birthday; // 可以嵌套其他类型的结构体
Struct student stu;// 错误的 不可以嵌套自己类型的结构体变量
Struct student *stu;//正确 可以嵌套自己类型的结构体指针
Int scores;
}stu1;
2)嵌套的结构体如何进行初始化
Struct student stu1={“张三丰”,23,{2015,7,16},85};
嵌套结构体的访问
Stu1.birthday.years;
Stu1.birthday.mouth;
Stu1.birthday.day;
结构体变量及成员作为函数参数
成员值做函数参数和结构一体变量名作为函数参数时实质是指传递。
Struct car{
Int lunzi;
Int speed;
};
Void ciuxche(struct car c1){
C1.lunzi=2;
}
Int main(){
Struct car car1={4,200};
Xiuche(car1);
Printf(“lunzi=%d”,car1.lunzi);//结果luinzi=4;值未改变
}
结构体指针做函数参数
用结构体指针做函数参数时地址传递。
Struct car{
Int lunzi;
Int speed;
};
Void ciuxche(struct car *p){
P->lunzi=2;
}
Int main(){
Struct car car1={4,200};
Xiuche(&car1);
Printf(“lunzi=%d”,car1.lunzi);//结果luinzi=2;值改变
} |
|