一.定义:结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
二.使用
1.可在函数内部使用,无论是那种函数。也可以单独定义。
2. 创建: struct (变量名){ int a ;....数据类型+变量名字 (结构的成员可以是标量、数组、指针,甚至是其他结构体。) }
例子:
struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
}Stu;//分号不能丢
3.创建结构体变量(类似与创建变量,有全局的,也有局部的)
形式是(结构体姓名)+变量名={ };
struct stu s={"rouse",19,"女生",1534642}
三.调用:
printf("%s %d %s %d",s.name,s.age,s.sex,s.id);
scanf("%d %c",&(s.age),&(s.sex));
四.传参
传值和传址:同一结构体就行,变量名不同也可以的
struct stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
};
game(struct stu s)
{
printf("%s %d %s %d", s.name, s.age, s.sex, s.id);
}
game2(struct stu* s)
{
printf("%s %d %s %d", (*s).name, (*s).age, (*s).sex, (*s).id);
printf("%s %d %s %d", s->name, s->age, s->sex, s->id);
}
int main()
{
struct stu s = { "rouse",19,"女生",1534642 };
game(s);//传值调用
game2(&s);//传址调用
return 0;
}
注意: 1.传址操作子函数的两种形式都是可以的
2.定义的结构体必须在子函数上面,或者再主函数内部
外加零碎知识:
一般编译的是debug类型,当测试时会用release
strcpy(操作到,源头) 引用头文件<string.h>作用:复制源头到操作到
assert(判断内容) 引用头文件<assert.h> 判断内容为真则无反应,为假则报错