口红网站建设目标,网站内容策划,手机页面网站模板怎么卖,西安企业做网站多少钱目录
一、结构体的定义
二、结构的声明
例子
三、 结构成员的类型
结构体变量的定义和初始化
1.声明类型的同时定义变量p1
2.直接定义结构体变量p2
3.初始化#xff1a;定义变量的同时赋初值。
4.结构体变量的定义放在结构体的声明之后
5.结构体嵌套初始化
6.结构体…目录
一、结构体的定义
二、结构的声明
例子
三、 结构成员的类型
结构体变量的定义和初始化
1.声明类型的同时定义变量p1
2.直接定义结构体变量p2
3.初始化定义变量的同时赋初值。
4.结构体变量的定义放在结构体的声明之后
5.结构体嵌套初始化
6.结构体嵌套初始化
结构体成员的访问
结构体变量访问成员
结构体指针访问指向变量的成员
四、结构体的传参
小结 大家好欢迎来到【蒸滴C】详解系列本期博客我整理了C语言中结构体的入门知识希望能对大家有所帮助 一、结构体的定义 官方解释为
结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员”其描述了一块内存区间的大小及解释意义
用大白话来讲就是
结构是一些值的集合这些值称为成员变量。结构的每个成员可以是不同类型的变量。 二、结构的声明 先来看看结构声明的格式
struct 结构体名称
{数据类型 成员列表;
} 变量名;
在这个格式中struct 是声明过程必须加上的关键字 。
注意 struct 不是函数而是关键字 (有些刁钻的考试可能会考不过这个大家看了有个印象就行了)
例子
然后知道了上面的声明格式我们就可以像下面一样创建一个结构体
struct Stu
{char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号
}Stu1//分号不能丢这段代码的意思就是声明一个结构体 Stu 然后定义一个结构体变量 Stu1 这个结构体里面包含了name、age、sex、id 这四个类型的数据
这里我用了这个例子可以引出结构体在实际编程中的重要作用比如想要收集一个学生的各种数据可以直接用结构体把这些数据包含在一起便于收集和整理 三、 结构成员的类型 结构的成员可以是标量、数组、指针甚至是其他结构体此为结构体的重难点
结构体变量的定义和初始化
关于结构体变量的定义和初始化有如下这几种方法
1.声明类型的同时定义变量p1
struct Point
{int x;int y;
}p1;
2.直接定义结构体变量p2
struct Point p2;
3.初始化定义变量的同时赋初值。
struct Point p3 {x, y};
4.结构体变量的定义放在结构体的声明之后
struct Stu
{char name[15];int age;
};
struct Stu s {zhangsan, 20};
5.结构体嵌套初始化
struct Node
{int data;struct Point p;struct Node* next;
}n1 {10, {4,5}, NULL};
6.结构体嵌套初始化
struct Node n2 {20, {5, 6}, NULL};
结构体成员的访问
结构体成员的访问分为两种
一种是通过结构体变量访问成员
另一种是通过结构体指针访问指向变量的成员。
下面是这两种访问方法的介绍
结构体变量访问成员
结构变量的成员是通过点操作符.访问的
点操作符接受两个操作数。
例如我创建了如下一个结构体 结构体变量 s 有成员 name 和 age 那我们如何访问s的成员
对了就是使用上面刚提到的点操作符“ . ” 请看下面代码
strcpy(s.name, zhangsan); //使用.访问name成员s.age 20; //使用.访问age成员
结构体指针访问指向变量的成员
有时候我们得到的不是一个结构体变量而是指向一个结构体的指针。 那该如何访问成员。 如下
struct Stu
{char name[20];int age;
};void print(struct Stu* ps)
{printf(name %s age %d\n, ps-name, ps-age);//使用结构体指针访问指向对象的成员
}int main()
{struct Stu s {zhangsan, 20};print(s);//结构体地址传参return 0;
} 四、结构体的传参 由上面的内容我们可以知道想要访问结构体的成员有两种方法
那么这两种方法有何区别呢
直接上代码
struct S
{int data[1000];int num;
};struct S s {{1,2,3,4}, 1000};//结构体传参
void print1(struct S s)
{printf(%d\n, s.num);
}//结构体地址传参
void print2(struct S* ps)
{printf(%d\n, ps-num);
}int main()
{print1(s); //传结构体print2(s); //传地址return 0;
}
上面的 print1 和 print2 函数哪个好些 答案是首选print2函数。
原因函数传参的时候参数是需要压栈的。如果传递一个结构体对象的时候结构体过大参数压栈的的系统开销比较大所以会导致性能的下降。
小结
结构体传参的时候优先考虑传结构体的地址 以上就是本篇博客的全部内容啦如有不足之处还请各位指出期待能和各位一起进步 文章转载自: http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn http://www.morning.qzmnr.cn.gov.cn.qzmnr.cn http://www.morning.dbtdy.cn.gov.cn.dbtdy.cn http://www.morning.kydrb.cn.gov.cn.kydrb.cn http://www.morning.fqtzn.cn.gov.cn.fqtzn.cn http://www.morning.haibuli.com.gov.cn.haibuli.com http://www.morning.qxlxs.cn.gov.cn.qxlxs.cn http://www.morning.xblrq.cn.gov.cn.xblrq.cn http://www.morning.ftmly.cn.gov.cn.ftmly.cn http://www.morning.yfphk.cn.gov.cn.yfphk.cn http://www.morning.zlces.com.gov.cn.zlces.com http://www.morning.woyoua.com.gov.cn.woyoua.com http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn http://www.morning.wknjy.cn.gov.cn.wknjy.cn http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn http://www.morning.pjbhk.cn.gov.cn.pjbhk.cn http://www.morning.nngq.cn.gov.cn.nngq.cn http://www.morning.jbgzy.cn.gov.cn.jbgzy.cn http://www.morning.rzcmn.cn.gov.cn.rzcmn.cn http://www.morning.zwtp.cn.gov.cn.zwtp.cn http://www.morning.xkjqg.cn.gov.cn.xkjqg.cn http://www.morning.cykqg.cn.gov.cn.cykqg.cn http://www.morning.cttti.com.gov.cn.cttti.com http://www.morning.chtnr.cn.gov.cn.chtnr.cn http://www.morning.080203.cn.gov.cn.080203.cn http://www.morning.cfnsn.cn.gov.cn.cfnsn.cn http://www.morning.zqcdl.cn.gov.cn.zqcdl.cn http://www.morning.pqcrz.cn.gov.cn.pqcrz.cn http://www.morning.ymsdr.cn.gov.cn.ymsdr.cn http://www.morning.prhfc.cn.gov.cn.prhfc.cn http://www.morning.fkwgk.cn.gov.cn.fkwgk.cn http://www.morning.tfpmf.cn.gov.cn.tfpmf.cn http://www.morning.qsmch.cn.gov.cn.qsmch.cn http://www.morning.dmnqh.cn.gov.cn.dmnqh.cn http://www.morning.kwyq.cn.gov.cn.kwyq.cn http://www.morning.chfxz.cn.gov.cn.chfxz.cn http://www.morning.kjcll.cn.gov.cn.kjcll.cn http://www.morning.jnkng.cn.gov.cn.jnkng.cn http://www.morning.dpflt.cn.gov.cn.dpflt.cn http://www.morning.mfxcg.cn.gov.cn.mfxcg.cn http://www.morning.wxfjx.cn.gov.cn.wxfjx.cn http://www.morning.nlhcb.cn.gov.cn.nlhcb.cn http://www.morning.lxdbn.cn.gov.cn.lxdbn.cn http://www.morning.ysdwq.cn.gov.cn.ysdwq.cn http://www.morning.ggnrt.cn.gov.cn.ggnrt.cn http://www.morning.cnwpb.cn.gov.cn.cnwpb.cn http://www.morning.ljygq.cn.gov.cn.ljygq.cn http://www.morning.lcqrf.cn.gov.cn.lcqrf.cn http://www.morning.ppbqz.cn.gov.cn.ppbqz.cn http://www.morning.rxkl.cn.gov.cn.rxkl.cn http://www.morning.rgxn.cn.gov.cn.rgxn.cn http://www.morning.zrkws.cn.gov.cn.zrkws.cn http://www.morning.hprmg.cn.gov.cn.hprmg.cn http://www.morning.dnycx.cn.gov.cn.dnycx.cn http://www.morning.zxhhy.cn.gov.cn.zxhhy.cn http://www.morning.fengnue.com.gov.cn.fengnue.com http://www.morning.kbdjn.cn.gov.cn.kbdjn.cn http://www.morning.yrhd.cn.gov.cn.yrhd.cn http://www.morning.rybr.cn.gov.cn.rybr.cn http://www.morning.lgcqj.cn.gov.cn.lgcqj.cn http://www.morning.hwcln.cn.gov.cn.hwcln.cn http://www.morning.fykrm.cn.gov.cn.fykrm.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.rwyw.cn.gov.cn.rwyw.cn http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn http://www.morning.jpfpc.cn.gov.cn.jpfpc.cn http://www.morning.xysxj.com.gov.cn.xysxj.com http://www.morning.cwzzr.cn.gov.cn.cwzzr.cn http://www.morning.txlnd.cn.gov.cn.txlnd.cn http://www.morning.rhdln.cn.gov.cn.rhdln.cn http://www.morning.yxkyl.cn.gov.cn.yxkyl.cn http://www.morning.pfnlc.cn.gov.cn.pfnlc.cn http://www.morning.gbyng.cn.gov.cn.gbyng.cn http://www.morning.lbssg.cn.gov.cn.lbssg.cn http://www.morning.xsfg.cn.gov.cn.xsfg.cn http://www.morning.drfcj.cn.gov.cn.drfcj.cn http://www.morning.rccbt.cn.gov.cn.rccbt.cn http://www.morning.rchsr.cn.gov.cn.rchsr.cn http://www.morning.woyoua.com.gov.cn.woyoua.com http://www.morning.rrxgx.cn.gov.cn.rrxgx.cn