第二十八天学习记录:C语言基础:初识结构体Ⅰ

您所在的位置:网站首页 c语言的基础知识有必要学吗 第二十八天学习记录:C语言基础:初识结构体Ⅰ

第二十八天学习记录:C语言基础:初识结构体Ⅰ

2023-05-18 13:14| 来源: 网络整理| 查看: 265

结构体的基础知识

结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。

结构的声明

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