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

宁海企业网站建设新蒲建设集团网站

宁海企业网站建设,新蒲建设集团网站,济南网站建站公司,启航做网站好吗在学习之前#xff0c;我们首先要了解柔性数组是放在结构体当中的#xff0c;知道这一点#xff0c;我们就开始今天的学习吧#xff01; 1.柔性数组的声明 在C99中#xff0c;结构中的最后一个元素允许是未知大小的数组#xff0c;这就叫做柔性数组成员 这里的结构是结构…在学习之前我们首先要了解柔性数组是放在结构体当中的知道这一点我们就开始今天的学习吧 1.柔性数组的声明 在C99中结构中的最后一个元素允许是未知大小的数组这就叫做柔性数组成员 这里的结构是结构体 我们看个代码了解 #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h//柔性数组的声明typedef struct S {int n;char c;char arr[0];//它就是柔性数组//还有另一种写法就是char arr[],这两种写法在我们vs中都是不会出错的 }S; int main() { //printf(%zd\n, sizeof(S));return 0;} 2.柔性数组的特点 1.结构中的柔性数组成员前面必须至少有一个其他成员 2.sizeof返回的这种结果大小不包括柔性数组的内存 3.包含柔性数组成员的结构用malloc函数进行内存的动态分配并且分配的内存应该大于结构体的大小以适应柔性数组的预期大小 我们可以验证一下 我们求一下这个结构体的大小 typedef struct S {int n;char arr[];//它就是柔性数组 }S; int main() {printf(%zd\n, sizeof(S));return 0; } 运行一下我们发现它求出来结构体的大小是前面整型的大小没有包含这个柔性数组的大小 我们再看一个代码来了解柔性数组的整体特性 typedef struct S {int n;char arr[];//它就是柔性数组 }S; int main() {//未使用这个柔性数组前计算一下这个结构体的总大小和后面使用之后作比较//看看有什么不同printf(%d\n, sizeof(S));//我们为这个结构体成员和柔性数组成员分配动态内存空间S* pc (S*)malloc(sizeof(char) * 10 sizeof(S));if (pc NULL){perror(malloc);return 1;}//开始使用柔性数组pc-n 100;int i 1;for (i 1; i 10; i){pc-arr[i] i;printf(%d , pc-arr[i]);}//如果空间不足我们可以进行增容S* str (S*)realloc(pc,sizeof(S) sizeof(sizeof(char) * 20));if (str NULL){printf(%s\n, strerror(errno));return 1;}pc str;printf(\n);//在这里我们可以求一下现在结构体的大小看它在使用了柔性数组之后//结构体的总大小是否发生了变化printf(%d\n, sizeof(S));//释放空间free(pc);pc NULL;return 0; } 我们运行查看一下结果 我们发现 1.结构体使用柔性数组前后结构体总大小没有发生变化都是4 2.我们使用别的办法也可以达到柔性数组所达到的效果为什么还要存在柔性数组呢 这就引出了我们下一个知识点为什么存在柔性数组 3.为什么存在柔性数组 我们用别的办法实现一下这个柔性数组所实现的功能对比着来看更能理解 typedef struct S {int n;char* arr; }S;int main() {printf(未动态开辟时内存大小%zd\n, sizeof(S));//为整个结构体分配动态内存空间S* pc (S*)malloc(sizeof(S));if (pc NULL){perror(malloc);return 1;}//使用这块空间pc-n 100;//再用malloc为指针arr分配空间pc-arr (char*)malloc(sizeof(char) * 10);if (pc-arr NULL){perror(malloc);return 1;}//使用给arr分配的这块空间int i 0;for (i 0; i 10; i){pc-arr[i] Q;printf(%c , pc-arr[i]);}printf(\n);printf(malloc这块空间后内存大小%zd\n, sizeof(S));//对这块空间进行增容char* ptr (char*)realloc(pc-arr, sizeof(char) * 20);if (ptr NULL){perror(realloc);return 1;}//使用增容后的空间ptr pc-arr;for (i 0; i 10; i){pc-arr[i] L;printf(%c ,pc-arr[i]);}printf(\n);printf(realloc这块空间后内存大小%zd\n, sizeof(S));//释放空间free(pc-arr);pc-arr NULL;free(pc);pc NULL;return 0; } 我们比较一下两种写法它们可以达到一样的效果 但是 柔性数组 1.malloc只需要开辟一次 2.free空间一次 3.开辟的空间是连续的 普通写法 1.malloc两次 2.free两次 3.开辟的空间不一定连续 我们要知道malloc的次数越多越容易处处可能free顺序不对或者忘记free造成内存泄漏同时内存碎片越多没别利用的空间就越多造成空间的浪费。 此时我们就要知道存在即合理柔性数组的存在是有一定的道理的。 接下来我们总结一下柔性数组的好处 4.柔性数组的好处 1.方便内存释放我们在为什么存在柔性数组里已经分析过了 2.有利于提高访问效率 连续的内存有益于提高访问速度也有益于减少内存碎片 好了这就是关于柔性数组的全部知识大家要慢慢感悟咱们下期再见
http://www.dnsts.com.cn/news/227011.html

相关文章:

  • 电子商务网站设计与开发案例教程兰州网站卡法
  • 查询网站的注册信息骨科医生在线咨询24小时免费
  • 网站建设运营维护方案求html码源网站
  • 水果网站策划方案o2o网站运维建设方案
  • 随州网站建设便宜上海企业核名查询系统
  • 服务器买好了怎么搭建自己的网站深圳家装设计工作室
  • 唐山模板建站定制网站网络营销软文案例
  • 网站建设合同报价单 模板英文网站用什么字体好
  • 布吉网站的建设是想建个网站 用本地做服务器
  • 北京网站关键词排名公司网站店铺的图片怎么做的
  • 长春网站建设费用淮南商城网站建设地址
  • 做网站建设的电销莱芜网络推广公司哪里找
  • 东莞大朗网站建设哪家口碑好优化方案历史
  • 网站推广在线推广定制开发小程序商城
  • 营销型网站建设实战网站建设4435
  • 怎样做网站内链网站后台发布图片upload failed
  • 做电影网站放抢先版wordpress it
  • 陕西做网站电话网站如何建立
  • 邯郸集团网站建设网络管理软件免费
  • 网站建设 发布即刻搜索引擎入口
  • wordpress生成网站模版成都科技网站建设联系
  • 图表设计 网站wordpress主题沐风
  • 做网站网页挣钱不深圳代理记账公司电话
  • 佛山市城乡住房建设局网站首页广州网站推广找谁
  • 自己做电影网站可以赚钱吗做网站的市场细分
  • 软件销售网站模板做任务网站
  • 网站推广营销案例高级又小众的公众号
  • 网站gif横幅广告怎么做通辽网站建设tlyltd
  • 玉器网站模版外贸网站电子建设
  • 世界上做的最后的网站东莞网站平面设计