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

静态网站制作价格seo服务 收费

静态网站制作价格,seo服务 收费,邯郸互联网公司,成都网站制作公司有哪些柔性数组1. 柔性数组介绍2. 柔性数组特点3. 用例3.1 代码一:3.2 代码二:4. 柔性数组优势:1. 柔性数组介绍 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中&#xff0c…

柔性数组

  • 1. 柔性数组介绍
  • 2. 柔性数组特点
  • 3. 用例
    • 3.1 代码一:
    • 3.2 代码二:
  • 4. 柔性数组优势:

1. 柔性数组介绍

也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。

C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。

例如:零长度数组概念

struct S
{int n;char c;int arr[];//柔性数组成员
};

有些编译器无法编译,可以改成:

struct S
{int n;char c;int arr[0];//柔性数组成员
};

2. 柔性数组特点

  • 结构中的柔性数组成员前面必须至少一个其他成员。

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

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

3. 用例

3.1 代码一:

在这里插入图片描述

//代码一:
struct S
{int n;char c;int arr[];
};
int main()
{struct S* ps = (struct S*)malloc(sizeof(struct S) + 10 * sizeof(int));//设置int arr数组元素为10个,10*sizeof(int)if (ps == NULL){printf("%s\n", strerror(errno));return 1;}ps->n = 100;ps->c = 'w';for (int i = 0;i < 10;i++){ps->arr[i] = i;}for (int i = 0;i < 10;i++){printf("%d\n", ps->arr[i]);}free(ps);ps = NULL;
}

3.2 代码二:

在这里插入图片描述

//代码二:
struct S
{int n;char c;int* arr;
};int main()
{struct S* ps = (struct S*)malloc(sizeof(struct S));if (ps == NULL){perror("malloc");return 1;}int*ptr = (int*)malloc(10 * sizeof(int));//设置int arr数组元素为10个,10*sizeof(int)if (ptr == NULL){perror("malloc2");return 1;}else{ps->arr = ptr;}//使用ps->n = 100;ps->c = 'w';int i = 0;for (i = 0; i < 10; i++){ps->arr[i] = i;}//打印for (i = 0; i < 10; i++){printf("%d ", ps->arr[i]);}//扩容 - 调整arr的大小ptr = realloc(ps->arr, 20 * sizeof(int));//增容int arr数组元素为20个,10*sizeof(int)if (ptr == NULL){perror("realloc");return 1;}else{ps->arr = ptr;}//使用ps->n = 100;ps->c = 'w';for (i = 0; i < 20; i++){ps->arr[i] = i;}//打印for (i = 0; i < 20; i++){printf("%d ", ps->arr[i]);}//释放free(ps->arr);ps->arr = NULL;free(ps);ps = NULL;return 0;
}

4. 柔性数组优势:

代码一和代码二都可以完成相同功能,但代码一有以下两个好处:

第一个好处是:方便内存释放。

如果我们的代码是在一个给别人用的函数中,你在里面做了二次内存分配,并把整个结构体返回给用户。

用户调用free可以释放结构体,但是用户并不知道这个结构体内的成员也需要free,所以你不能指望用户来发现这个事。

所以,如果我们把结构体的内存以及其成员要的内存一次性分配好了,并返回给用户一个结构体指针,用户做一次free就可以把所有的内存也给释放掉。
在这里插入图片描述

第二个好处是:这样有利于访问速度。

连续的内存有益于提高访问速度,也有益于减少内存碎片。

(其实,我个人觉得也没多高了,反正 你跑不了要用做偏移量的加法来寻址)

补充:局部性原理:

  • 局部性原理是计算机科学中的一种基本原理,指的是程序中的指令和数据在执行时会集中在较小的一部分存储器中,并且在短时间内重复使用。这种局部性表现在两个方面:时间局部性和空间局部性。

  • 时间局部性指的是,某个数据或指令一旦被使用,在短时间内会被多次使用。例如,在循环结构的程序中,循环体内的指令会被反复执行。

  • 空间局部性指的是,某个数据或指令的使用会对其周围的数据与指令产生影响,这些数据和指令也会在短时间内被多次使用。例如,在数组操作中,相邻的元素都会被频繁地访问。

  • 局部性原理的应用可以提高计算机系统的性能,例如通过缓存技术和虚拟内存技术,让系统可以快速地访问常用的数据和代码,从而减少了额外的访问时间和存储开销。

👊👊👊
感谢阅读!

http://www.yayakq.cn/news/598368/

相关文章:

  • 做网站的公司都有哪些岗位网站建设定制网站建设公司
  • 杭州市城乡规划局建设局官方网站推广咨询
  • 网站发布方式有哪些做自己网站做站长
  • 张家口网站设计医疗网站搭建
  • 百度权重查询爱站网wordpress不同栏目使用不同模板
  • 网站建设选哪家好国外图片设计网站有哪些
  • 昆明网站建设知名企业建行网站
  • 商务网站建设策划书范文pageadmin建站系统
  • 学院网站信息化建设总结创业新项目
  • 福州网站开发cms网站建设公司人员组成
  • 做电商网站公司简介厦门网站建设方案书
  • 网站二次备案淘宝网站建设模板免费下载
  • 各类网站网站建设的目标是什么意思公司网站改版建议
  • 如何利用ps做网站免费推广网址大全
  • 网站安全检测工具网站建筑培训网排行榜
  • 网站适配手机怎么做建设部网站工程资质
  • 网站设计咨询wordpress 评论后
  • 无锡网站建设方案托管网页设计公司南充有哪些
  • 长春建站服务美容美发培训
  • 马鞍山建设局网站心理教育网站建设目的
  • 成都市网站设计开发怎么申请域名建网站
  • 石家庄营销型网站建设费用手机制作网页用什么软件
  • 成都网站seo网站价格网页制作
  • 南沙网站建设方案wordpress亲你迷路了
  • 网站推广的四个阶段深圳建网站服务商
  • 做响应式网站设计师需要做什么网站关键词表格下载
  • 扬州手机网站开发wordpress问答悬赏插件
  • 做网站服装appwordpress 分类 文章前
  • 广州网站制作实力乐云seoseo需要掌握什么技能
  • 实体店做网站有用吗外贸网站google推广