A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 后街男孩 中级黑马   /  2015-7-19 13:06  /  469 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

结构数组概念
数组的元素也可以构成结构是结构类型的,因此可以成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。

结构数组定义
定义格式: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;值改变
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马