C语言结构体应用实例分析
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍"C语言结构体应用实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C语言结构体应用实例分析"文章能帮助大家解决问题。1、结构体的声明1.
千家信息网最后更新 2025年11月14日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安全错误
数据库的锁怎样保障安全
网络安全书签图片
服务器管理器角
高校网络安全建设调研报告
vc软件开发案例
面向对象数据库技术试题
数据库系统的构成是怎样的
mips数据库网址
霍尼韦尔网络安全报告
聚焦网络技术创新和变革
数据库敏感数据安全
家长对网络安全孩子的嘱咐
中专做软件开发
网络安全等级保护工作的流程
阿里云服务器 视频
瑞安图腾服务器机柜哪家好
怎样运行网络安全向导
超事通网络技术有限公司
未签合同先软件开发
服务器销售代理流程
平谷有做软件开发的工作吗
艺考生数据库
数据库核心工作室完成
数据库安全加密方法
网络安全大讲堂本周五
dmz区域数据库
服务器电脑能当正常办公电脑吗
如何登陆挂在远端服务器上的软件
广州火舞软件开发
电视台网络安全人员管理
在职读研网络安全