赞
踩
目录
数组里存放的是相同元素的集合,而结构体存放的可以是不同元素的集合。
例如描述一个学生:
- struct Stu
- {
- char name[20];//名字
- int age;//年龄
- char sex[5];//性别
- char id[20];//学号
- }; //分号不能丢
struct--定义结构体
Stu--结构体标签(方便了解结构体成员类型,在这里就是学生的相关信息)
struct Stu:结构体类型
(使用:类型+变量名(类似于int a,char b))
- struct Stu
- {
- char name[20];
- int age;
- char sex[5];
- char id[20];
- //创建的时候定义变量
- }s1,s2,s3;
-
-
- //直接使用
- s1={…………};
- s2={…………};
struct Stu s = { "张三",18,"男","123456" };//成员之间用 , 隔开
printf("%s %d %s %s", s.name, s.age, s.sex, s.id);
- struct Stu s = { "张三",18,"男","123456" };
- //创建结构体指针
- struct Stu* p = &s;
- printf("%s %d %s %s\n", p->name, p->age, p->sex, p->id);
- //错误用法
- struct S
- {
- int data;
- struct S next;
- };
- struct S
- {
- int data;
- //指针
- struct S* next;
- };
结构体传参可以传值,也可以传地址。
- void Print(struct Stu s)
- {
- printf("%s %d %s %s", s.name, s.age, s.sex, s.id);
-
- }
- int main()
- {
- struct Stu s = { "张三",18,"男","123456" };
- //传值
- Print(s);
- void Print(const struct Stu* p)//const 修饰*p,*p的值不可以改变,Print函数只负责打印
- {
- printf("%s %d %s %s\n", p->name, p->age, p->sex, p->id);
-
- }
- int main()
- {
- struct Stu s = { "张三",18,"男","123456" };
- //传地址
- Print(&s);
不过总的来说,还是建议传地址,因为地址大小是固定的4/8字节(32位平台/64位平台),而且通过地址我们可以在函数内部改变结构体成员变量的值,权限更多一些。
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。