黑马程序员---学习笔记10:结构体数组

七分热度_HD 2015-08-13 10:55: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);

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

结构体指针作为函数的参数,用结构体变量的地址传递给函数,在函数中传递过来一个指针,这个指针指向实参,当调用这个函数时,在栈中为函数分配存储空间,但是空间中存储的不是实参的值,而是实参中值的地址,当形参修改成员时,就会通过地址找到实参的值,从而对实参进行修改。
...全文
957 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,160

社区成员

发帖
与我相关
我的任务
社区描述
在CSDN学院遇到的问题反馈及对学院的改进建议等。
社区管理员
  • 软件培训社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧