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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 新生heima 中级黑马   /  2015-8-13 23:28  /  534 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

定义:
结构数组中的每一个元素都是具有相同结构类型的变量

格式:
struct  结构名{
成员列表;
}数组名【数组长度】;

结构体数组的初始化:
1)定义结构体数组的同时进行初始化
struct  Student{
char name[21];
int age;
}boy[3]={{"aaa",18},{"bbb",21},{"ccc",33}};

2)定义数组的同时进行初始化:
struct  Student  girls={{"aaa",18},{"bbb",21},{"ccc",33}};

3)先定义,后初始化,整体赋值
struct Student da[2];
da[0]=(struct Student){"kkk",18};

4)先定义结构体数组,然后初始化
struct  Student  stu[2];
//strcpy(stu[0].name,"zhangsan");
scanf("%s",stu[0].name);

结构数组的遍历:
用for循环就可以了,和普通数组遍历一样

指向结构体变量的指针:
一般形式:struct  结构体名 *结构指针变量名
struct  Student  *p=stu1;

结构体指针访问成员变量的形式:
1)(*指针变量名).成员名  
2)结构指针变量->成员名

结构体嵌套使用
嵌套回顾:
1)if语句
2)三目运算符嵌套
3)for循环
4)递归函数

结构体嵌套:
成员是一个结构,构成了嵌套的结构。
结构体定义里面有其他结构体。
结构体不可以嵌套自己变量,可以嵌套指向自己这种类型的指针。

嵌套的结构体如何进行初始化?
struct Student stu1={"张三丰",28,59.99f,{1220,12,22}};//包含的结构体可以在内部进行初始化

3)结构体嵌套自身的指针
struct  Person{
char *name;
int     age;
struct Person *child;


struct Person kim={"kim",8,NULL};
struct Person lin ={"Lzy",38,&kim};

printf("%s的儿子是:%s,儿子的年龄是:%d\n",lin.name,(*lin.child).name,(*lin.child).age);
printf("%s的儿子是:%s,儿子的年龄是:%d\n",lin.name,lin.child->name,lin.child->age);

用结构体变量名作为函数的形参,属于值传递,对实参是无法进行修改的。

结构体指针作为函数的参数,用结构体变量的地址传递给函数,在函数中传递过来一个指针,这个指针指向实参,当调用这个函数时,在栈中为函数分配存储空间,但是空间中存储的不是实参的值,而是实参中值的地址,当形参修改成员时,就会通过地址找到实参的值,从而对实参进行修改

4 个回复

倒序浏览
不错,赞一个。。。。
回复 使用道具 举报
默凉雨 发表于 2015-8-14 13:40
不错,赞一个。。。。

谢谢支持!
回复 使用道具 举报
赞一个!!!
回复 使用道具 举报
看了!! !!!!!!!!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马