C语言结构体应用实例分析
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍"C语言结构体应用实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C语言结构体应用实例分析"文章能帮助大家解决问题。1、结构体的声明1.
千家信息网最后更新 2025年01月31日C语言结构体应用实例分析
这篇文章主要介绍"C语言结构体应用实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C语言结构体应用实例分析"文章能帮助大家解决问题。
1、结构体的声明
1.1 结构的基础知识
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量
1.2 结构的声明
struct tag{ member-list;}variable-list;
下面几种方式都一样,定义了学生的结构体类型,内容包括:名字、年龄、性别、学号
//举例1struct Stu{ char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号};//分号不能丢//举例2struct Stu{ char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号}s1,s2,s3;//定义了3个结构体类型的变量//举例3typedef struct stu stu;//举例4typedef struct stu{ char name[20]; int age; char sex[8]; float score;}stu;int main(){ struct stu stu4;//局部变量 struct stu stu5; stu stu6;//全局变量 return 0;}
1.3 结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体
1.4 结构体变量的定义和初始化
struct Point{ int x; int y;}p1; //声明类型的同时定义变量p1struct Point p2; //定义结构体变量p2//初始化:定义变量的同时赋初值。struct Point p3 = { x, y };struct Stu //类型声明{ char name[15];//名字 int age; //年龄};struct Stu s = { "zhangsan", 20 };//初始化struct Node{ int data; struct Point p; struct Node* next;}n1 = { 10, {4,5}, NULL }; //结构体嵌套初始化struct Node n2 = { 20, {5, 6}, NULL };//结构体嵌套初始化
2、结构体成员的访问
2.1 点操作符访问
结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数:变量名.成员
struct S s;strcpy(s.name, "zhangsan");//使用.访问name成员s.age = 20;//使用.访问age成员
2.2 ->操作符访问
指向一个结构体的指针,结构体指针访问指向变量的成员,变量名 ->成员
struct Stu{ char name[20]; int age;};void print(struct Stu* ps){ printf("name = %s age = %d\n", (*ps).name, (*ps).age);//使用结构体指针访问指向对象的成员 printf("name = %s age = %d\n", ps->name, ps->age);}
3、结构体传参
3.1 参数是结构体类型的变量
struct point{ int x; int y;}p1 = {10,20};struct s//结构体{ char c; struct point sp; double d; char arr[20];//字符串};void print1(struct s ss)//传参结构体{ printf("%c\n", ss.c); printf("%d\n", ss.sp.x); printf("%d\n", ss.sp.y); printf("%lf\n", ss.d); printf("%s\n", ss.arr);}int main(){ struct point p1 = { 100, 200 };//定义1个变量,并初始化 struct s ss = { 'w',{100,20},5.5,"hello" };//初始化 ss.c = 'b'; ss.sp.x = 1000; ss.sp.y = 2000; ss.d = 3.14; //ss.arr = "wolrd";错误的方法 strcpy(ss.arr, "world");//字符串赋值函数 print1(ss);//打印结构体变量}
3.2 参数是结构体类型的变量的地址
struct point{ int x; int y;}p1 = {10,20};struct s{ char c; struct point sp; double d; char arr[20];//字符串};void print2(struct s* ss)//传参地址{ printf("%c\n", ss->c); printf("%d\n", ss->sp.x); printf("%d\n", ss->sp.y); printf("%lf\n", ss->d); printf("%s\n", ss->arr);}int main(){ struct s ss = { 'w',{100,20},5.5,"hello" };//初始化 ss.c = 'b'; ss.sp.x = 1000; ss.sp.y = 2000; ss.d = 3.14; //ss.arr = "wolrd";错误的方法 strcpy(ss.arr, "world"); print2(&ss);//打印结构体变量}
3.3 结构体传参对比
上面两种函数实现的效果一样,见下图:
函数print1接受的是结构体类型变量,是形参,另外开辟了空间,将实参拷贝了一份,占用内存空间大
- 函数print2接受的是结构体类型的地址,定义结构体类型的指针接收地址,只开辟了空间存放地址,占用内存空间小
**要注意:**函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。因此,结构体传参的时候,要传结构体的地址,即函数 print2 比函数 print1 效果好。
关于"C语言结构体应用实例分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
结构
变量
成员
类型
函数
地址
指针
参数
名字
年龄
操作符
知识
空间
实例
实例分析
语言
分析
应用
字符
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
linux查看数据库名
软件开发模型 迭代模型
网络安全法是一地
数据库售卖方式
斑马网络技术有限公司总经理
免费linux云服务器
中大网络安全专业考研线
信息和网络安全管理措施
数据库查询 英语
优质软件开发服务好的商家
服务器的放置地方的防护
大专软件开发需要带电脑吗
UAP连接不上数据库
vcn软件开发工具
梦幻西游手游服务器爆满多少人
崩坏三华为渠道服如何换服务器
实时历史数据库使用情况
工业网络技术就业待遇
小学生网络安全活动总结
矿井无线传感器网络技术
网络安全对密码的描述正确的是
中国电信网络安全的愿景
国开数据库应用技术综合应用题
java实现数据库的事务
关系中元组对应于数据库中的
如何创建数据库只读账号
王者荣耀服务器被迫关闭
蜂窝无线网络技术有什么书
网络安全法 首例
腾讯服务器放山洞里