首页 > 作文

C语言中的柔性数组你真的了解吗

更新时间:2023-04-05 01:20:29 阅读: 评论:0

目录
个性帅哥柔性数组概念:特点:与指针动态开辟的比较指针动态开辟柔性数组指针动态开辟的缺点总结

柔性数组概念:

柔性数组就是一种特殊的数组

它也是结构体最后一个成员

也就是说,它存在结构体最后一个成员的位置上

特点:

1.柔性数组在结构体的大小是未知的,在sizeof中不计算其大小

#include<stdio.h>struct s{int n ;int arr[0];//或者int arr[];};main(){printf("the size of the structure is烧菜菜谱  %d",sizeof(struct s));return 0;}

2.在结构体中,如果存在柔性数组,就必须满足它的前面含有其它的成员,来申请空间,,因为他的大小本身是未知的,不计算大小。

3.包含柔性数组的结构体要靠malloc去动态申请这块空间,这就体现了柔性数组的柔,也就是可以平安夜送苹果控制大小,且分配的空间一定满足大于其它成员的大小。

与指针动态开辟的比较

在日常的编程中,有时候需要在结构体中存放一个长度动态的数组

一般的做法,是在结构体中定义一个指针成员,这个指针成员指向该数组所在的动态内存空间

指针动态开辟

#include<stdio.h>struct s{int n;int* arr;}; int main(){struct s* ps = (struct s*)malloc(sizeof(struct s));ps->n = 100;ps->arr = (int*)malloc(40);free(ps->arr);ps->arr = null;free(ps);ps = null;return 0;}

通过柔性数组来实现如下:

柔性数组

#include<stdio.h>struct s{int n;int arr[0];//柔性数组};int main(){struct s*明星如何美白牙齿 ps = (struct s*)malloc(sizeof(struct s)+40);//使用//改变申请的空间struct s* tmp= (st深圳购物ruct s*)realloc(ps, sizeof(struct s)+80);if (tmp == null){return;}if (tmp != null){ps = tmp;}return 0;}

指针动态开辟的缺点

1.此方式会多次进行开辟于释放动态申请的空间,就容易会导致错误

2.容易出现内存碎片

当指针动态开辟的足够多的时候,中间就会出现很多内存碎片,每个内存碎片不连续

就会导致空间的浪费

3.相较于柔性数组,cpu访问的速度要慢一些

cpu访问内存大部分在访问一个空间后,就会访问相邻的空间,就不一次性访问下一个连续的空间,这就会导致,在一定程度上的降速。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注www.887551.com的更多内容!

本文发布于:2023-04-05 01:20:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/7a5cbcc770e0e58a7f021f6a6e8e9fba.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C语言中的柔性数组你真的了解吗.doc

本文 PDF 下载地址:C语言中的柔性数组你真的了解吗.pdf

标签:数组   柔性   指针   动态
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图