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

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-



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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值