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

什么什么云用来做网站公关团队

什么什么云用来做网站,公关团队,丰台青岛网站建设,做废品回收在什么网站推广柔性数组从C99开始支持使用 1.柔性数组的概念 概念: 结构体中,结构体最后一个元素允许是未知大小的数组,这就叫[柔性数组]的成员 struct S {int n;char arr[]; //数组大小未知(柔性数组成员) }; 柔性数组的特点: 结构体中柔性…

柔性数组从C99开始支持使用

1.柔性数组的概念

概念:

结构体中,结构体最后一个元素允许是未知大小的数组,这就叫[柔性数组]的成员

struct S
{int n;char arr[]; //数组大小未知(柔性数组成员)
};

柔性数组的特点:

结构体中柔性数组成员前必须至少有一个其他成员

sizeof返回的这种结构大小不包括柔性数组的内存

struct S
{int n;char arr[]; 
};
int main()
{  printf("%zu\n", sizeof(struct S););   //4return 0;
}

由图可知sizeof计算时不会包含柔性数组的大小

2.如何给柔性数组开辟空间呢?

如果结构体中有柔性数组,那么系统应该这么帮结构体开辟空间

怎样使用:

#include <stdio.h>
#include <stdlib.h>typedef struct S
{int n;char arr[];
}S;int main()
{//sizeof(char)*10 根据需求改变,柔性数组就是可变数组S* ptr = (S*)malloc(sizeof(S) + sizeof(char) * 10);if (ptr == NULL){perror("S::malloc");return 1;}//ptr->n = 4;int i = 0;for (i = 0; i < 10; i++){ptr->arr[i] = 'a';}for (i = 0; i < 10; i++){printf("%c ", ptr->arr[i]);}// free(ptr);// ptr = NULL;//增容S* pc = (S*)realloc(ptr, sizeof(S) + sizeof(char) * 20);if(pc == NULL){perror("S::realloc");return 1;}else{ptr = pc;}free(ptr);ptr = NULL; return 0;
}

3.如果我们给柔性数组申请了动态内存会不会改变结构体大小?

不会!!!

#include <stdio.h>
#include <stdlib.h>typedef struct S
{int n;char arr[];
}S;int main()
{//sizeof(char)*10 根据需求改变,柔性数组就是可变数组S* ptr = (S*)malloc(sizeof(S) + sizeof(char) * 10);if (ptr == NULL){perror("S::malloc");return 1;}printf("%zu", sizeof(S));free(ptr);ptr = NULL;return 0;
}

运行结果:

形式如图所示:

可以看到申请了空间之后还是4字节

包含柔性数组的结构体用malloc()函数进行内存的动态分配,并且分配的内存大小应该大于结构体的大小,以适应柔性数组的预期大小

4.使用字符型指针代替柔性数组

typedef struct S
{int n;char* str;
}S;int main()
{printf("%zu", sizeof(S));return 0;
}

运行结果:

进行代替

#include <stdio.h>
#include <stdlib.h>typedef struct S
{int n;char* str;
}S;int main()
{S* ptr = (S*)malloc(sizeof(S));if (ptr == NULL){perror("malloc");return 1;}ptr->n = 4;ptr->str = (char*)malloc(sizeof(char) * 10);if (ptr->str == NULL){perror("ptr->str::malloc");return 1;}int i = 0;for (i = 0; i < 10; i++){ptr->str[i] = 'a';}for (i = 0; i < 10; i++){printf("%c ", ptr->str[i]);}//增容char* pc =(char*)realloc(ptr->str, sizeof(char) * 20);if(pc != NULL){ptr->str = pc;}else{perror("pc::realloc");return 1;}//释放顺序不要弄反,也可以先释放pc//如果先释放ptr,ptr->str就没有了free(ptr->str);ptr->str = NULL;free(ptr);ptr = NULL;return 0;
}

这个形式如图:

5.柔性数组的好处

虽然用char* str也可以实现,但是有弊端

使用柔性数组的好处:

->1.malloc 只需要使用一次

->2.free 只需要使用一次

->3.空间是连续的

与char* str相比

不容易出错

内存碎片少,空间利用率高

效率高(访问速度相对快)

http://www.tj-hxxt.cn/news/66984.html

相关文章:

  • 网站开发 方案 报价单网络营销的常用方法有哪些
  • 网站标题如何书写seo包年优化费用
  • 西安网站建设个人北京学校线上教学
  • 世界知名网站企业推广视频
  • 线上app怎么做seo培训优化
  • 河南如何做网站网站权重是什么意思
  • 什么网站有做册子版今天今日头条新闻
  • 网站内容页相关性怎么做爱上链外链购买交易
  • 网站域名管理怎么登陆百度快照查询入口
  • 建立一个网站大约要多少钱百度问一问官网
  • 建设专门网站 强化信息宣传网络营销软文案例
  • php免费企业网站源码推广竞价托管公司
  • 今天郑州新闻头条网站设计优化
  • 做网站腾讯云服务器字节跳动广告代理商加盟
  • 电影网站域名济南百度代理
  • 网站建设师百度百科如何做好线上推广和引流
  • 做网站公司起什么名字唐山百度seo公司
  • 墨刀可以做网站原型图吗怎么做网站排名
  • 网站管理系统推荐网页设计制作网站代码
  • 学网页设计有什么网站网页制作培训网站
  • 网站后期维护内容ueeshop建站费用
  • 淘宝客网站建设难度大吗各大网址收录查询
  • 西宁网站建设报价怎么优化网站排名才能起来
  • 个人工作室税收优惠政策网站优化有哪些类型
  • 邢台哪里有做网站的重庆公司网站seo
  • t想学网站建设怎样推广公司的网站
  • 天津 响应式网站设计百度网页
  • 织梦网站tel标签优化营商环境的措施建议
  • 梧州网站开发公司网站推广方法
  • 户网站建设整改报告百度百度一下你就知道主页