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

茂名网站建设公司企业网址

茂名网站建设公司,企业网址,网站设计制作的服务和质量,注册公司名称用什么名字好#x1f466;个人主页#xff1a;Weraphael ✍#x1f3fb;作者简介#xff1a;目前是C语言学习者 ✈️专栏#xff1a;C语言航路 #x1f40b; 希望大家多多支持#xff0c;咱一起进步#xff01;#x1f601; 如果文章对你有帮助的话 欢迎 评论#x1f4ac; 点赞个人主页Weraphael ✍作者简介目前是C语言学习者 ✈️专栏C语言航路 希望大家多多支持咱一起进步 如果文章对你有帮助的话 欢迎 评论 点赞 收藏 加关注 前言 说起数组一维数组、二维数组、字符数组、整型数组和浮点型数组我相信大家并不陌生吧今天我们一起看看柔性数组 目录前言一、柔性数组的概念和定义二、柔性数组的特点三、柔性数组的使用四、柔性数组的优势一、柔性数组的概念和定义 在C99中结构中的最后一个元素允许是未知大小的数组我们把这样的数组称为柔性数组成员。 【定义】 struct S {int i;int a[]; //柔性数组 };若有些编译器无法编译可以改成以下这种 struct S {int i;int a[0];//柔性数组成员 };二、柔性数组的特点 结构中的柔性数组前必须至少有一个其他成员 sizeof返回的这种结构大小不包括柔性数组的内存 包含柔性数组成员的结构用malloc函数进行动态内存分配并且分配的内存应该大于结构体大小以适应柔性数组的预期大小 三、柔性数组的使用 动态内存开辟函数讲解传送门 #include stdio.h #include stdlib.h struct S {int i;char a[]; }; int main() {//包含柔性数组成员的结构用malloc函数进行动态内存分配//并且分配的内存应该大于结构体大小struct S* sp (struct S*)malloc(sizeof(struct S) 10 * sizeof(char));//若sp为空指针说明开辟动态内存失败if (sp NULL){return 1;}//否则开辟成功//使用sp-i 100;for (int i 0; i 10; i){sp-a[i] x;}//打印for (int i 0; i 10; i){printf(%c , sp-a[i]);}//释放free(sp);sp NULL;return 0; }甚至还能扩容realloc #include stdio.h #include stdlib.h struct S {int i;char a[]; }; int main() {//包含柔性数组成员的结构用malloc函数进行动态内存分配//并且分配的内存应该大于结构体大小struct S* sp (struct S*)malloc(sizeof(struct S) 10 * sizeof(char));//若sp为空指针说明开辟动态内存失败if (sp NULL){return 1;}//否则开辟成功//使用sp-i 100;for (int i 0; i 10; i){sp-a[i] x;}//扩容(多加10字节的空间)struct S* p (struct S *)realloc(sp, sizeof(struct S) sizeof(char) * 20);//如果p为空指针说明扩容失败if (p NULL){return 1;}else{sp p;p NULL;}for (int i 10; i 20; i){sp-a[i] w;}//打印printf(%d\n, sp-i);for (int i 0; i 20; i){printf(%c , sp-a[i]);}return 0; }所以柔性数组在内存其实是这样的 它在内存是连续的 四、柔性数组的优势 除【柔性数组的使用】样例以外也可以设计成下面这样 #include stdio.h #include stdlib.hstruct S {int i;char* a; };int main() {//为结构体开辟空间struct S* sp (struct S*)malloc(sizeof(struct S));//若sp NULL说明开辟失败if (sp NULL){return 1;}//否则开辟成功//使用内存空间sp-i 100;//为char* a开辟10个字节空间sp-a (char*)malloc(sizeof(char) * 10);//使用for (int i 0; i 10; i){sp-a[i] w;}//或者还能为char* a扩容char* p (char*)realloc(sp-a, 20 * sizeof(char));if (p NULL){return 1;}else{sp-a p;p NULL;}//使用扩容的空间for (int i 10; i 20; i){sp-a[i] J;}//打印printf(int i %d\n, sp-i);for (int i 0; i 20; i){printf(%c , sp-a[i]);}//释放空间free(sp-a);sp-a NULL;free(sp);sp NULL;return 0; }一个常见的问题为什么要先释放sp-a的内存空间 首先程序是先为结构体开辟空间 接着又为char*开辟空间 所以若先对sp释放空间到后面就不能通过sp找到char* c开辟的空间 柔性数组好处的总结 对于柔性数组来说开辟空间malloc只需要一个释放空间free也只需要一次且内存空间是连续的而对于上面的代码来说开辟空间需要二次释放空间也同样需要二次且内存空间是不连续的。所以它第一个好处是方便内存释放连续的内存有益于提高访问速度
http://www.hkea.cn/news/14449297/

相关文章:

  • 自助建站优化网络门店管理系统
  • 国内的c2c网站有哪些商标logo设计图案
  • 国外有哪些做建筑材料的网站app网站公司
  • pc网站开发使用什么布局好logo图案免费
  • 网站策划书市场分析昭通建设局网站
  • 艺术家网站建设中企业网站建设的策划初期的一些误区网站建设英语怎么说
  • 网站总是在建设中网页设计与制作模板及素材
  • 做网站大约需要多少钱百度精准推广
  • 大连网站建设ewaylife专门做有机食品的网站
  • 微信高端网站建设app开发 深圳
  • 《网站开发与应用》大作业网络营销师培训课程
  • 什么网站简单北京seo关键词优化收费
  • 网站建设的项目计划wordpress nonce
  • 网络编辑做营销网站seo
  • 厦门网站制作案例县城网站怎样做经验
  • 网站设计与网页设计的区别宁波网络推广制作
  • 名字设计网站google推广seo
  • 平阴网站建设免费做金融网站有哪些
  • 个人网站设计企业php笔记网站
  • 手机建站免费网站怎么做seo优化
  • 旅游交友的网站建设网站网站做代理违法吗
  • 天津市工程建设交易管理中心网站网络科技公司一般做什么
  • 视频图站主题 wordpress电子商务网站建设预算
  • 网站建设产品手册网站建设及网站推广
  • 网站建设公司哪家好cms网站管理系统制作
  • 怎么自己编码做网站游戏网页设计html代码大全
  • 物流网站建设公司哪家好物联网平台中心
  • 外贸订单的网站办公门户网站模板下载
  • 昆明做商城网站多少钱苏州网络公司排行榜
  • 莱西网站建设wap网站的域名