第二十八天学习记录:C语言基础:初识结构体Ⅰ |
您所在的位置:网站首页 › c语言的基础知识有必要学吗 › 第二十八天学习记录:C语言基础:初识结构体Ⅰ |
结构体的基础知识
结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 结构的声明struct tag { member-list; }variable-list; 例如描述一个人: typedef struct Stu { char name[20]; short age; char tele[12]; char sex[5] }Stu; #define _CRT_SECURE_NO_WARNINGS 1 #include //struct 结构体关键字 Stu-结构体标签 struct Stu-结构体类型 struct Stu { //成员变量 char name[20]; short age; char tele[12]; char sex[5]; }s1,s2,s3;//s1,s2,s3是三个全局的结构体变量 typedef struct Hum { //成员变量 char name[20]; short age; char tele[12]; char sex[5]; }Hum;//类型重命名 int main() { struct Stu s;//创建结构体变量 局部结构体变量 Hum h; printf("%d\n", sizeof(s2)); return 0; } 结构成员的类型结构的成员可以是标量、数组、指针、甚至是其他结构体 结构体变量的定义和初始化 #define _CRT_SECURE_NO_WARNINGS 1 #include 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[] = "Chung"; struct T t = { "hehe",{100,'w',"hello",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; } 结构体成员的访问 #define _CRT_SECURE_NO_WARNINGS 1 #include 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); printf("tele:%s\n", tmp.tele); printf("sex: %s\n", tmp.sex); } void Print2(Stu* ps) { printf("name:%s\n", ps->name); printf("age: %d\n", ps->age); printf("tele:%s\n", ps->tele); printf("sex: %s\n", ps->sex); } int main() { Stu s = { "张三",35,"13885462564","女" }; //打印结构体数据 //Print1和Print2 Print2更优(节约时间和空间) Print1(s); Print2(&s); return 0; }注:函数在传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。 结论:结构体传参的时候,要传结构体的地址。 补充:压栈操作 数据结构: 线性数据结构 { 顺序表 链表 栈 队列 } 树形数据结构 { 二叉树 } 图 函数栈帧的创建和销毁:转载https://blog.csdn.net/m0_63312733/article/details/124820743 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |