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

昔阳网站建设广东seo外包服务

昔阳网站建设,广东seo外包服务,阿里云国际站官网,b站视频推广网站有哪些目录什么是柔性数组柔性数组的使用什么是柔性数组 柔性数组是在C99中定义的 结构体的最后一个元素允许是未知大小的数组,这就叫柔性书组 柔性数组的长度可以写成0,也可以不规定数组长度 下面两种写法都是正确的 struct S { int i; int a[0];//柔性数…

目录

  • 什么是柔性数组
  • 柔性数组的使用

什么是柔性数组

柔性数组是在C99中定义的

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

柔性数组的长度可以写成0,也可以不规定数组长度
下面两种写法都是正确的

struct S
{
int i;
int a[0];//柔性数组成员
}
struct S
{
int i;
int a[];//柔性数组成员
}
  • 结构体中的柔性数组成员前面至少有一个其他成员
  • sizeof返回的这种结构体的大小不包括柔性数组的大小
  • 包含柔性数组成员的结构体用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大
    小,以适应柔性数组的预期大小。

柔性数组的使用

typedef struct S
{int i;char c[];//c是柔性数组
}S;int main()
{S* p = (S*)malloc(sizeof(S) + 10 * sizeof(char));if (p == NULL){perror("malloc");return 1;}p->i = 10;for (int i = 0; i < 10; i++){p->c[i] = 'a';}free(p);p = NULL;return 0;
}

malloc开辟空间时,开辟空间大小为sizeof(S) + 10 * sizeof(char),前面的sizeof(S)其实是表示结构体中int i的大小,后面则是给c开辟了10个字节大小的连续空间

如果觉得前面开辟空间小了,数组c不够长,还可以用realloc函数对内存大小进行调整

int main()
{S* p = (S*)malloc(sizeof(S) + 10 * sizeof(char));if (p == NULL){perror("malloc");return 1;}p->i = 10;S* ptr = (S*)realloc(p, sizeof(S) + 20 * sizeof(char));if (ptr == NULL){perror("realloc");return 1;}p = ptr;for (int i = 0; i < 20; i++){p->c[i] = 'a';}free(p);p = NULL;return 0;
}

其实我们也可以写出另一种形式的结构体,它的功能与柔性数组类似

typedef struct S2
{it i;char* c;
}S2;

对于这个结构体的使用如下:

int main()
{S2* p = (S2*)malloc(sizeof(S2));p->i = 10;p->c = (char*)malloc(10 * sizeof(char));for (int i = 0; i < 10; i++){p->c[i] = 'a';}free(p->c);p->c = NULL;free(p);p = NULL;return 0;
}

为了使用这个结构体,需要先给结构体开辟一个空间S2* p = (S2*)malloc(sizeof(S2));然后再需要动态开辟一个块空间让c指向

这种写法需要开辟2次内存,同样在最后释放内存是,也需要free2次

所以就可以看出柔性数组的好处:
第 一个是方便内存释放

因为不论是我们在使用时或给别人写一个函数让别人使用时,如果在里面做了二次内存分配,可能别人使用时并不会知道结构体内部还有一个成员需要释放。所以就需要把内存一次性分配好,在最后释放一次内存就可以了

第二个是加快访问

如果二次内存分配,就会在内存中产生一些内存碎片,这样即浪费了空间也不利于访问

http://www.mmbaike.com/news/93871.html

相关文章:

  • 成都网站建设 哪家比较好关键词智能优化排名
  • 衡量一个网站的指标网络营销就是
  • 可以推广的网站有哪些百度普通收录
  • 广东做网站找谁百度知道网页版登录入口
  • 男女做那个网站动态图片佛山企业用seo策略
  • 关于我校校园网站建设的调研报告广州aso优化公司 有限公司
  • 如何做设计网站页面国内优秀网页设计赏析
  • 新网网站南京seo外包
  • 网站pr查询网站是否含有seo收录功能
  • 一个vps建两个网站怎么弄数据库谷歌google浏览器官方下载
  • 淘宝网站开发成本百度游戏排行榜风云榜
  • 广州做网站优化哪家专业服务营销的概念
  • 网站添加微信电商运营公司排名
  • wordpress cpu 100网站的推广优化
  • 恒信在线做彩票的是什么样的网站企业文化理念
  • 做场景秀的网站seo助理
  • 国外做耳机贸易的平台网站百度点击器找名风
  • 简洁大方的网站线上销售平台都有哪些
  • 网业制作与网站建设网站营销策划公司
  • 做网站 广州哪里可以免费推广广告
  • 良庆网站建设不受国内限制的浏览器
  • 网站建设地位最新军事报道
  • html5电商网页制作百度seo关键词排名优化教程
  • 发布外链网站做seo的公司
  • 17网站一起做网店杭州500个游戏推广群
  • 西安网站优化推广方案如何营销推广
  • wordpress底部美化北京网站营销seo方案
  • 新疆网站优化网站提交收录软件
  • 客户关系管理软件有哪些seo优化搜索结果
  • 阿里云域名服务北京seoqq群