软文推广文章案例营销导向的企业网站优化
2026/1/26 12:19:04 网站建设 项目流程
软文推广文章案例,营销导向的企业网站优化,小程序搭建教程,网站内容管理平台接下来#xff0c;让我们来到结构体的世界#xff0c;当然关于结构体位段以及其余的相关知识#xff0c;请关注我#xff0c;可以了解后续#xff0c;下面的是与程序学习相关的其它博客#xff0c;有需要的可以点击#xff0c;即可跳转对应博客 关于C语言的基础见识分支…接下来让我们来到结构体的世界当然关于结构体位段以及其余的相关知识请关注我可以了解后续下面的是与程序学习相关的其它博客有需要的可以点击即可跳转对应博客关于C语言的基础见识分支与循环选择向左循环向右编程中的函数哲学封装、调用与自我迭代数组编程世界里的收纳大师操作符程序世界的语法工具箱1. 结构体类型的声明前面我们在学习操作符的时候已经学习了结构体的知识这里稍微复习一下1.1 结构体的回顾结构是一些值的集合这些值称为成员变量。结构的每个成员可以是不同的类型的变量1.1.1 结构的声明structtag{member-list;}variable-list;当我们来描述一个学生时typedefstructStu{charname[20];//名字intage;//年龄charsex[5];//性别charid[20];//学号}Stu//分号不能丢1.1.2 结构体的变量的创建和初始化#includestdio.hstructStu{charname[20];//名字intage;//年龄charsex[5];//性别charid[20];//学号};intmain(){//按照结构体成员的顺序初始化structStus{张三,20,男,20230818001};printf(name: %s\n,s.name);printf(age : %d\n,s.age);printf(sex : %s\n,s.sex);printf(id : %s\n,s.id);//按照指定的顺序初始化structStus2{.age18,.namelisi,.id20230818002,.sex女};printf(name: %s\n,s2.name);printf(age : %d\n,s2.age);printf(sex : %s\n,s2.sex);printf(id : %s\n,s2.id);return0;}1.2 结构的特殊声明声明结构的时候可以不完全的声明//匿名结构体struct{inta;charb;floatc;}x;struct{inta;charb;floatc;}a[20],*p;但这里我们可以想想如果px;//可以完成赋值嘛我在VS2022试了生成解决方案和运行时没有出错但是尽量不要这样编译器会把上面的两个声明当作完全不同的两个类型所以是非法的匿名的结构体类型没有对结构体重命名的话基本上只能使用一次1.3 结构的自引用structNode{intdata;structNodenext;};如果用上述这种自引用结构体的大小就会无穷的大时不合理的所以正确的自引用方式应当如下structNode{intdata;structNode*next;};假如结构体自引用的时候加载了typedef对匿名结构体类型的重命名可以运行看看是否可行呢typedefstruct{intdata;Node*next;}Node;明显不行因为Node是对前面的你们结构体类型重命名产生的但是你们结构体内部却提前使用Node类型来创建成员变量这是不可行的所以定义结构体尽量不要使用匿名结构体typedefstructNode{intdata;structNode*next;}Node;2. 结构体的访问通过点操作符(.)和(-)进行访问结构体变量访问成员通过(.)访问其接受两操作数structStu{charname[20];intage;};structStus;//访问s的成员intmain(){strcpy(s.name,zhangsan);s.age20;}结构体指针访问指向变量的成员structStu{charname[20];intage;};voidprint(structStu*ps){printf(name %s age %d\n,(*ps).name,(*ps).age);//使用结构体指针访问指向对象的成员printf(name %s age %d\n,ps-name,ps-age);}intmain(){structStus{zhangsan,20};print(s);//结构体地址传参return0;}3. 结构体传参structS{intdata[1000];intnum;};structSs{{1,2,3,4},1000};//结构体传参voidprint1(structSs){printf(%d\n,s.num);}//结构体地址传参voidprint2(structS*ps){printf(%d\n,ps-num);}intmain(){print1(s);//传结构体print2(s);//传地址return0;}上述的两种传参我们最好选第二种也就是Print2函数函数传参需要压栈如果传递一个结构体对象时结构体过大就会导致参数压栈的系统开销大从而导致性能下降通过指针访问就可以节省栈空间总而言之结构体传参传指针就完事了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询