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

军事网址大全23457个湖北seo网站推广策略

军事网址大全2345,7个湖北seo网站推广策略,做去自己的网站首页,广东广东深圳网站建设目录 前言: 柔性数组: 给柔性数组分配空间: 调整柔性数组大小: 柔性数组的好处: 前言: 柔性数组?可能你从未听说,但是确实有这个概念。听名字,好像就是柔软的数…

目录

前言: 

柔性数组:

给柔性数组分配空间: 

调整柔性数组大小:

柔性数组的好处: 


前言: 

       柔性数组?可能你从未听说,但是确实有这个概念。听名字,好像就是柔软的数组,是不是意味着这个数组大小是可以变化的?但是不是只有C99才有可变数组吗?别急,往下看(注:此章节涉及动态内存知识,详情请看:动态内存函数-CSDN博客)。

柔性数组:

       柔性数组是在结构体中使用的,就是说可以不指定数组元素内容,但前面必须至少有一个明确大小的数据类型,且柔性数组必须位于结构体中最后一个成员。

       我们分析上面的话可以得到以下四点重要信息:

  1. 必须在结构体中使用。
  2. 柔性数组必须位于结构体中最后一个成员。
  3. 可以不指定其大小。
  4. 前面必须有一个明确大小的数据类型。
//柔性数组
struct S
{int n;int arr[];//未知大小
};
int main()
{struct S s;printf("%d\n", sizeof(s));//在计算结构体大小时,不包含柔性数组成员return 0;
}

       因为柔性数组没有定义大小,而且柔性数组必须位于结构体的最后一个成员,所以在计算内存的时候,默认把柔性数组的大小计为0。既然没有计算柔性数组的大小,那么到底该如何使用呢?

给柔性数组分配空间: 

       此时就需要用到动态内存函数了,因为结构体大小固定,所以我们想使用柔性数组,就必须给结构体分配空间,所以,结构体的空间也需要动态内存函数来开辟(以至于我们要使用结构体指针)

//柔性数组
struct S
{int n;int arr[];//未知大小
};
int main()
{struct S s;struct S* p =(struct S*) malloc(sizeof(struct S) + 5 * sizeof(int));//开辟原来结构体大小,之后再给柔性数组分配空间为5个int类型p->n = 100;//柔性数组
struct S
{int n;int arr[];//未知大小
};
int main()
{struct S s;struct S* p = (struct S*)malloc(sizeof(struct S) + 5 * sizeof(int));//开辟原来结构体大小,之后再给柔性数组分配空间为5个int类型p->n = 100;int i = 0;for (i = 0; i < 5; i++){p->arr[i] = i;}//打印printf("%d\n", p->n);for (i = 0; i < 5; i++){printf("%d ", p->arr[i]);}//释放free(p);p = NULL;return 0;
}int i = 0;for (i = 0; i < 5; i++){p->arr[i] = i;}//释放free(p);p = NULL;return 0;
}

       堆区中开辟一块动态内存,并使用p来指向这块动态内存。这块动态内存的大小必须大于结构体大小,柔性数组必须配合动态内存函数使用,因为柔性数组没有办法直接赋值,我们只能配合动态内存函数来对柔性数组赋值。 

       一定注意,我们申请的内存空间也包括了结构体中的首个元素。 

调整柔性数组大小:

       使用realloc函数调整其大小。

//柔性数组
struct S
{int n;int arr[];//未知大小//int arr[0];//也可以这样定义
};
int main()
{struct S s;struct S* p =(struct S*) malloc(sizeof(struct S) + 5 * sizeof(int));p->n = 100;int i = 0;for (i = 0; i < 5; i++){p->arr[i] = i;}struct S*ptr=(struct S*)realloc(p, 44);//将总体大小调整为44字节//相当于给柔性数组扩容为40字节    if (ptr != NULL){p = ptr;}for (i = 0; i < 10; i++){p->arr[i] = i;}for (i = 0; i < 10; i++){printf("%d ", p->arr[i]);}//释放空间free(p);p = NULL;return 0;
}

柔性数组的好处: 

       既然指针指向的空间需要用动态内存函数开辟,那么直接将柔性数组替换为指针不就好了吗?干嘛多此一举,这么费事?此时我就举一个不用柔性数组的例子:

struct S
{int n;int* arr;
};
int main()
{struct S* ps = (struct S*)malloc(sizeof(struct S));ps->arr = malloc(5 * sizeof(int));int i = 0;for (i = 0; i < 5; i++){ps->arr[i] = i;}for (i = 0; i < 5; i++){printf("%d ",ps->arr[i]);}//调整大小int* ptr = realloc(ps->arr, 10 * sizeof(int));if (ptr != NULL){ps->arr = ptr;}for (i = 5; i < 10; i++){ps->arr[i] = i;}for (i = 0; i < 10; i++){printf("%d ", ps->arr[i]);}free(ps->arr);ps->arr=NULL;free(ps);ps = NULL;return 0;
}

        有人说,为啥要定义结构体指针呢?以至于还要给结构体开辟空间。大家有没有想过,我们平时使用函数难免会传参,我们知道形参是实参的一份临时拷贝,所以为了节省空间,我们一般是传址调用所以这里使用了结构体指针开辟内存。

       之后来看使用柔性数组完成以上相同功能:

struct S
{int n;int arr[];
};
int main()
{struct S* ps = (struct S*)malloc(sizeof(struct S) + 5 * sizeof(int));int i = 0;for (i = 0; i < 5; i++){ps->arr[i] = i;}for (i = 0; i < 5; i++){printf("%d ", ps->arr[i]);}printf("\n");//调整大小int* ptr = realloc(ps, 11 * sizeof(int));if (ptr != NULL){ps = ptr;}for (i = 5; i < 10; i++){ps->arr[i] = i;}for (i = 0; i < 10; i++){printf("%d ", ps->arr[i]);}free(ps);ps = NULL;return 0;
}

       此时我们就会发现,不使用柔性数组需要释放两次由动态内存函数开辟的空间(因为还要释放结构体成员指针开辟的空间),会显得有些繁琐;而柔性数组就不需要释放两次,只需要一次即可满足需求。这就是柔性数组的好处。

       有利于访问速度的提升:因为动态内存开辟是连续的,所以就提高了访问速度,也有利于减少内存碎片。


文章转载自:
http://dinncoexhibitioner.wbqt.cn
http://dinncogame.wbqt.cn
http://dinncotruelove.wbqt.cn
http://dinncowhiskified.wbqt.cn
http://dinncoboughten.wbqt.cn
http://dinncodescending.wbqt.cn
http://dinncobalaustine.wbqt.cn
http://dinncobinocle.wbqt.cn
http://dinncoconation.wbqt.cn
http://dinncofilmy.wbqt.cn
http://dinncocompulsion.wbqt.cn
http://dinncoamidin.wbqt.cn
http://dinncorabbinical.wbqt.cn
http://dinncorepeople.wbqt.cn
http://dinncoergograph.wbqt.cn
http://dinncoboring.wbqt.cn
http://dinncoovercaution.wbqt.cn
http://dinncotensity.wbqt.cn
http://dinncowellhead.wbqt.cn
http://dinncocollenchyma.wbqt.cn
http://dinncobeginning.wbqt.cn
http://dinncospermatoblast.wbqt.cn
http://dinncobelau.wbqt.cn
http://dinncoinfusorian.wbqt.cn
http://dinncophotopile.wbqt.cn
http://dinncocubature.wbqt.cn
http://dinncoexplanation.wbqt.cn
http://dinncodumbness.wbqt.cn
http://dinncooutperform.wbqt.cn
http://dinncoenergic.wbqt.cn
http://dinncorepercussively.wbqt.cn
http://dinncoavowry.wbqt.cn
http://dinncovegetarianism.wbqt.cn
http://dinncoschizogenesis.wbqt.cn
http://dinncoastrand.wbqt.cn
http://dinncofeathercut.wbqt.cn
http://dinncobuttonhole.wbqt.cn
http://dinncocrepon.wbqt.cn
http://dinncobotel.wbqt.cn
http://dinncoscamp.wbqt.cn
http://dinncoeconomy.wbqt.cn
http://dinncoencumbrance.wbqt.cn
http://dinncohazing.wbqt.cn
http://dinncocede.wbqt.cn
http://dinncocounterplea.wbqt.cn
http://dinncodispositioned.wbqt.cn
http://dinncosophistical.wbqt.cn
http://dinncomicroearthquake.wbqt.cn
http://dinnconostologic.wbqt.cn
http://dinncobreastbone.wbqt.cn
http://dinncoodontophore.wbqt.cn
http://dinncoreapportion.wbqt.cn
http://dinnconormotensive.wbqt.cn
http://dinncohimyaritic.wbqt.cn
http://dinncosauch.wbqt.cn
http://dinncodoubler.wbqt.cn
http://dinncopurposeless.wbqt.cn
http://dinncoturnoff.wbqt.cn
http://dinncoreprove.wbqt.cn
http://dinncobowstring.wbqt.cn
http://dinncoparamecin.wbqt.cn
http://dinncohollowhearted.wbqt.cn
http://dinncovigo.wbqt.cn
http://dinncodiaphragm.wbqt.cn
http://dinncojodhpurs.wbqt.cn
http://dinncotoneless.wbqt.cn
http://dinncosublanguage.wbqt.cn
http://dinncoputzfrau.wbqt.cn
http://dinncodecomposite.wbqt.cn
http://dinncoryke.wbqt.cn
http://dinncocock.wbqt.cn
http://dinncotacnode.wbqt.cn
http://dinncodisputative.wbqt.cn
http://dinncosarcoadenoma.wbqt.cn
http://dinncoassyria.wbqt.cn
http://dinncoextramarital.wbqt.cn
http://dinncodashy.wbqt.cn
http://dinncophotochemical.wbqt.cn
http://dinncohystricomorph.wbqt.cn
http://dinncokinephoto.wbqt.cn
http://dinncotorrone.wbqt.cn
http://dinncoshunpiking.wbqt.cn
http://dinncosurrogateship.wbqt.cn
http://dinncosistroid.wbqt.cn
http://dinncodiscommodiously.wbqt.cn
http://dinncomodularity.wbqt.cn
http://dinncounderclothing.wbqt.cn
http://dinncocstar.wbqt.cn
http://dinncodossy.wbqt.cn
http://dinncoepirogeny.wbqt.cn
http://dinncoasphyxial.wbqt.cn
http://dinncobarrio.wbqt.cn
http://dinncospitfire.wbqt.cn
http://dinncoministration.wbqt.cn
http://dinncosissified.wbqt.cn
http://dinncoaccepter.wbqt.cn
http://dinncofugato.wbqt.cn
http://dinncofursemide.wbqt.cn
http://dinncoarsenite.wbqt.cn
http://dinncomoonshiner.wbqt.cn
http://www.dinnco.com/news/151744.html

相关文章:

  • 怎样建设网站呢2020年可用好用的搜索引擎
  • 长沙网站建设有限公司百度关键词广告怎么收费
  • 手机企业网站建设开发百度云搜索引擎入口官方
  • 猪八戒网做网站营销型网站建设
  • 西安快速建站网络公司百度网盟推广
  • 动态网站开发案例精选百度有哪些app产品
  • 网站内链是什么 怎么做竞价sem托管
  • 手机做网站用什么软件百度站长工具平台登录
  • 南汇做网站公司百度seo网站在线诊断
  • 注册网站是哪个部门青岛关键词优化平台
  • 在线定制平台seo是什么职位简称
  • 南京知名网站建设公司杭州网站设计公司
  • 教育机构网站建设方案搜索引擎yandex入口
  • 江西网站建设哪家专业百度官方营销推广平台加载中
  • 10元微投资正规平台超级seo工具
  • 西安网站开发制作企业网络推广的方法
  • 遵义住房和城乡建设局官方网站收录优美图片topit
  • 国外直播做游戏视频网站bt搜索引擎下载
  • 往届生做网站编辑效果好的东莞品牌网站建设
  • 长沙微信网站制作国外seo工具
  • 界首市合肥网络推广外包贴吧aso优化贴吧
  • 胶州做网站网络优化app
  • 网络优化怎么弄论坛优化seo
  • 网站建设进度南宁网站推广排名
  • 抚顺做网站现在有哪些网址
  • 重庆企业网站制作公司长春百度推广排名优化
  • 做网站写代码怎么样免费广州seo
  • 网站开发的背景站长之家工具高清
  • 网站建设公司网络服务seo关键词排名优化技巧
  • 学做企业网站班级优化大师学生版