结构 ? 结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量 结构的声明 struct tag { ?? ?member-list; }variable-list; 描述一个学生的数据 struct Stu//struct 结构体关键字 ?Stu结构体标签 struct Stu结构体类型 { ?? ?//成员变量 ?? ?char name[20]; ?? ?short age; ?? ?char tele[12]; ?? ?char sex[5]; }s1,s2,s3;//三个都是全局变量 typedef struct Stu { ?? ?//成员变量 ?? ?char name[20]; ?? ?short age; ?? ?char tele[12]; ?? ?char sex[5]; }Stu; int main() { ?? ?struct Stu s1 = { "张三",20,"1234678911","男" };//局部变量 ?? ?Stu s2 = { "旺财",30,"01234567890","保密" };//初始化 ?? ?return 0; }
struct S { ?? ?int a; ?? ?char c; ?? ?char arr[20]; ?? ?double d; };
struct T { ?? ?char ch [10]; ?? ?struct S s; ?? ?char *pc; };
int main() { ?? ?char arr[] = "hello\n"; ?? ?struct T t = { "hehe",{100,'w',"hello world",3.14},arr }; ?? ?printf("%s\n", t.ch); ?? ?printf("%s\n", t.s.arr); ?? ?printf("%lf\n", t.s.d); ?? ?printf("%s\n", t.pc); ?? ?return 0; }
?
结构体传参 typedef struct Stu { ?? ?//成员变量 ?? ?char name[20]; ?? ?short age; ?? ?char tele[12]; ?? ?char sex[5]; }Stu;
void Print1(Stu tmp) { ?? ?printf("name:%s\n", tmp.name); ?? ?printf("age:%d\n", tmp.age); }
void Print2(Stu* ps) { ?? ?printf("name:%s\n", ps->name); }
int main() { ?? ?Stu s = { "李四",40,"01234567899","男" }; ?? ?Print1(s); ?? ?Print2(&s); } 结构体传参时,参数需要压栈的,系统开销较大,在传参时要穿结构体地址
|