当前位置: 首页 > news >正文

网站建设销售秘籍宁夏电建网站

网站建设销售秘籍,宁夏电建网站,模板支撑体系搭设规范,中建八局第一建设有限公司设计院目录 结构体 结构体的使用方法 结构体所占用的大小 位段 位段的使用方法 位段所占用的大小 枚举常量 枚举常量的使用方法 枚举常量的优势 联合体 联合体的使用方法 结构体 结构体的使用方法 结构体是一些值的集合#xff0c;我们可以定义一个结构体#xff0c;里…目录 结构体 结构体的使用方法 结构体所占用的大小 位段 位段的使用方法 位段所占用的大小 枚举常量 枚举常量的使用方法 枚举常量的优势 联合体 联合体的使用方法 结构体 结构体的使用方法 结构体是一些值的集合我们可以定义一个结构体里面可以包含不同类型的值例如定义一个学生我们可以这样使用结构体 那我们要输入一个学生的信息应该如何呢? 我们写一段这样的代码 #include stdio.h struct stu {char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号 }s2 { Hardworker2,28,女,20240323002 }; void main() {struct stu s1 { Hardworker1,18,男,20240323001 };printf(%s %d %s %s\n, s1.name, s1.age, s1.sex, s1.id);printf(%s %d %s %s\n, s2.name, s2.age, s2.sex, s2.id); } 这段代码的运行结果如下 可以看到在结构体后面跟一个变量也可以完成结构体的初始化或者在主函数再次声明变量也可也初始化这两种有什么区别呢?区别就是在结构体后初始化的变量如果在主函数之上就是一个全局变量而在主函数内的变量为局部变量。 另外结构体声明也可以调用结构体如 struct Point {int x;int y; }p1; struct Point p2; //声明类型的同时定义变量p1//定义结构体变量p2//初始化定义变量的同时赋初值。 struct Point p3 { x, y }; struct Stu {//类型声明Cchar 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 };//结构体嵌套初始化 在结构体内调用其他的结构体也是可以的那我们能不能在结构体内部调用自己呢? 用这种方式是不行的因为如果再次调用自己的话就会再次开辟一次内存内存会一直递归开辟直到程序崩溃但是我们可以用指针的方式调用自己需要注意的是我们需要的是一部分装我们想要的数据另外一部分装下一个需要相同类型结构体的地址如下 为了方便理解笔者写了一段代码便于理解如何一部分装值一部分装地址 #include stdio.hstruct Node {int value;struct Node* next; };void print_chain(struct Node* init) {while (init-next){printf(%d, init-value);init init-next;if (!(init-next)){printf(%d, init-value);}} } void main() {struct Node f { 1,NULL };struct Node e { 2,f };struct Node d { 3,e };struct Node c { 4,d };struct Node b { 5,c };struct Node a { 6,b };print_chain(a); } 我们看到依次打印为654321 结构体所占用的大小 如下程序结构体占用的大小是多少呢 按理来说char占用一个字节int占用四个字节那么一共就是六个字节但是当我们输出sizeof(S1)却发现结果为12个字节那结构体在内存中是怎么进行存放的呢? 我们来看一下结构体给与内存的规则是怎么样的 1. 第一个成员在与结构体变量偏移量为0的地址处。 2. 其他成员变量要对齐到某个数字对齐数的整数倍的地址处。 对齐数 编译器默认的一个对齐数 与 该成员大小的较小值。 VS中默认的值为8 3. 结构体总大小为最大对齐数每个成员变量都有一个对齐数的整数倍。 4. 如果嵌套了结构体的情况嵌套的结构体对齐到自己的最大对齐数的整数倍处结构体的整 体大小就是所有最大对齐数含嵌套结构体的对齐数的整数倍。 因此第一个char地址为偏移量为0的地方即为0 int类型的地址为某个数字对齐数的整数倍的地址处编译器默认的一个对齐数 与 该成员大小的较小值 既为4的整数倍因此1、2、3都不可以为int的地址只有4存放而int占4个字节大小所以4-7均为int的地址 下一个char按照第二个规则继续存放既存放到8的地址而为什么没有结束呢 按照3的规矩总大小为最大对齐数的整数倍所以我们必须再开辟三个字节让结构体的大小为12才可以结束我们可以看看图片更为直观的理解结构体的大小占用 位段 位段的使用方法 位段的声明和结构是类似的有两个不同 1.位段的成员必须是 char int、unsigned int 或signed int 。 2.位段的成员名后边有一个冒号和一个数字。 如下 其实后面的冒号数代表的就是分配给其所占的比特数大小那么位段的大小为多少呢? 位段所占用的大小 对于上面的位段我们来测试一下此位段所占用的大小 我们发现占用的大小为8个字节但是按理来说如果是比特数大小其字节数应该6(21632)/87 那为什么输出的结果为8呢?其实原因在于对于一个整型变量如果超出了四个字节之后位段结构体会为其再开辟四个字节但是问题又来了c中存放的32个比特的数据是在后四个字节里面还是一部分再前四个字节里面一部分在后四个字节里面呢? 让我们给这三个参数赋值来看看答案如何 #include stdio.hstruct test {int a : 2;int b : 16;int c : 32; }s;void main() {struct test d { 1,30,20 };printf(%d, sizeof(s)); } 我们调用d的内存发现其存放的方式如下 其实我们仔细分析一下a作为占2比特的变量结构体分给其第一个字节后两位接着剩下的还是在第一个定义的int的四个字节内所以依次剩下的6个比特以及12个比特分给了b如所示区域但是当分配给c的时候c占用32个比特第一个int所占的四个字节无法接纳那么大的内存所以开辟了一段新的空间给它但是上一个没用完的空间是不分配给c的所以我们最终看到系统分配内存方式如下 枚举常量 枚举常量的使用方法 枚举顾名思义就是一一列举。 把可能的取值一一列举。 比如我们现实生活中 一周的星期一到星期日是有限的7天可以一一列举。 性别有男、女、保密也可以一一列举。 月份有12个月也可以一一列举 这里就可以使用枚举了。 枚举的代码如下所示 enum Day//星期 {Mon,Tues,Wed,Thur,Fri,Sat,Sun }; enum Sex//性别 {MALE,FEMALE,SECRET } enum Color//颜色 {RED,GREEN,BLUE };上面所定义的量都称之为枚举常量是不可以进行修改的常量。 拿颜色举例就是赋值了 RED大小为0的枚举常量 GREEN大小为1的枚举常量 BLUE大小为2的枚举常量依次累加 如果想要定义RED为4 直接在enum的时候赋值RED4就好 但是接下来的数据也会变成 GREEN 5 ;BLUE 6 枚举常量的优势 枚举的优点 1. 增加代码的可读性和可维护性 2. 和#define定义的标识符比较枚举有类型检查更加严谨。 3. 防止了命名污染封装 4. 便于调试 5. 使用方便一次可以定义多个常量 联合体 联合体的使用方法 联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员特征是这些成员公用同一块空间所以联合也叫共用体。 比如 #include stdio.h //联合类型的声明 union Un {char c;int i; }; //联合变量的定义 union Un un; void main() { //计算连个变量的大小printf(%d\n, sizeof(un)); }联合体顾名思义就是里面定义的内容共用同一块内存区域联合的大小至少是最大成员的大小。 当最大成员大小不是最大对齐数的整数倍的时候就要对齐到最大对齐数的整数倍。 当每次赋值的时候联合体内的内存都会被重新赋值
http://www.pierceye.com/news/846136/

相关文章:

  • 营销型网站推广公司最好的app开发公司
  • 做网站硬件江西省城乡建设陪训网官方网站
  • 深圳做小程序网站开发短视频剪辑在哪里学
  • 集约化网站建设广州网站制作
  • 如何做网站链接wordpress 视
  • 北京专业建设网站公司做网站那几步
  • 网站版式布局宁波百度推广优化
  • 邵阳专业网站设计网站建设打造营销型网站
  • 网站内部链接的策略成都装修公司网站建设
  • 网页制作与网站建设答案联合易网北京网站建设公司怎么样
  • 虚拟主机安装网站wordpress xss
  • 营销网站的优点网上服务大厅用户登录
  • 阿里云网站建设服务费会计科目网站域名改了帝国cms
  • 塑业东莞网站建设网站建设的课件
  • 制作网页网站教程网站开发一般用
  • 网站换空间 sitewordpress 下载功能
  • 国外优秀的字体设计网站西安地产网站制作公司
  • 微网站和普通网站区别租腾讯服务器做网站行吗
  • 西安网站品牌建设福州建设发展集团网站
  • 网站源码怎么有wordpress内嵌播放器
  • 南宁网站快速排名提升一起来做网站17
  • 网站做数据分析什么软件是做网站的
  • 邯郸移动网站建设建设网站的报价
  • 做网站优化期间能收到网站吗科技创新与应用
  • 有没有做的很炫的科技型网站wordpress企业主题二次开发下载
  • 陕西住房和建设部网站深圳外贸建站模版
  • 自己做网站的各种代码wordpress只能访问主页
  • 四川监理协会建设网站长沙有哪些楼盘
  • 网站首页欣赏网站模板 wordpress带会员系统
  • 关于音乐的个人网站wordpress 报名表单