黑马程序员技术交流社区

标题: 学习笔记10:结构体数组 [打印本页]

作者: 新生heima    时间: 2015-8-13 23:28
标题: 学习笔记10:结构体数组
定义:
结构数组中的每一个元素都是具有相同结构类型的变量

格式:
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);

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

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

作者: 默凉雨    时间: 2015-8-14 13:40
不错,赞一个。。。。
作者: 新生heima    时间: 2015-8-14 17:54
默凉雨 发表于 2015-8-14 13:40
不错,赞一个。。。。

谢谢支持!
作者: norwood    时间: 2015-8-14 19:34
赞一个!!!
作者: lixianzhu0712    时间: 2015-8-14 21:44
看了!! !!!!!!!!!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2