首页 > 其他分享 >C语言--柔性数组

C语言--柔性数组

时间:2023-05-23 21:31:57浏览次数:38  
标签:-- 成员 C语言 int 内存 数组 柔性 sizeof

柔性数组

柔性数组的大小是未知的,数组大小是可以调整的。结构体中最后一个元素允许是未知大小的数组。

#inclide <stdio.h>
#include <string.h>
#include <errno.h>

typedef struct S
{
  int n;
  int arr[];//柔性数组成员
  //int arr[0];//柔性数组成员
}S;
int main()
{
	S *p = NULL;
  p = malloc(sizeof(S)+10*sizeof(int));
  p->n=10;
  for(int i=0;i<10;i++)
  {
    p->arr[i]=i;
  }
  for(int i=0;i<10;i++)
  {
    printf("%d ",p->arr[i]);
  }
  free(p);
  p=NULL;
}

柔性数组特点

  • 结构体的柔性数组成员前面必须至少一个其他成员。
  • sizeof返回这种结构体大小不包括柔性数组的内存。
  • 包含柔性数组的结构用malloc函数进行动态内存分配。
  • 方便内存释放。
  • 访问速度有所提升,连续空间减少内存碎片。


标签:--,成员,C语言,int,内存,数组,柔性,sizeof
From: https://blog.51cto.com/u_16071993/6334805

相关文章

  • 2023-05-23:如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等, 那么称 X
    2023-05-23:如果交换字符串X中的两个不同位置的字母,使得它和字符串Y相等,那么称X和Y两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,"tars"和"rats"是相似的(交换0与2的位置);"rats"和"arts"也是相似的,但是"star"不与"tars","rats",或"a......
  • ahb_system_generator
    0.ahb_system_generatorEnviroment:WSL2ahb_generator要运行AHB系统生成器,必须安装PERL(一般系统自带)和一个名为Tk的GUIPERL模块perl--version //检查perlperl-e"useTk" //检查Tk模块,若未安装会返回错误信息1.perlinstall官网下载Tk模块安装包进入解压......
  • 【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发
    问题描述AzureEventHub支持kafka,所以为了测试消息生产者所在环境与AzureEvent Hub之间发送消息的性能如何,特别使用kafka官方测试生产者,消费者的性能工具:kafka-producer-perf-test.batkafka-consumer-perf-test.bat(.bat表示为Windows系统中运行,.sh表示在Linux系......
  • 实验4 函数与异常处理编程
    task1print(sum)sum=42print(sum)definc(n):sum=n+1print(sum)returnsumsum=inc(7)+inc(7)print(sum)运行结果: task2.1deffunc1(a,b,c,d,e,f):return[a,b,c,d,e,f]deffunc2(a,b,c,*,d,e,f):#返回参数a,b,c,d,e,f构成......
  • xfce4.18 安装 orage [未成功]
    不知道为啥xfce不默认安装orage。按照官网https://docs.xfce.org/apps/orage/start#latest_release,记录安装过程。1,下载源码,https://mirror.netcologne.de/xfce/src/apps/orage/4.18/orage-4.18.0.tar.bz22,阅读README.md,检查依赖, configure:error:XWindowsystemlib......
  • HTML(二)
     表格表格的主要作用1.表格主要用于显示、展示数据,因为它可以让数据显示的非常的规整,可读性非常好。特别是后台展示数据的时候,能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理2.表格不是用来布局页面的,而是用来展示数据的。3.表格的......
  • 从数字三角形开始的DP生活——第一天
    题目链接#include<iostream>usingnamespacestd;constintN=1e3+5;intn;intf[N][N],a[N][N],ans;intmain(){ ios::sync_with_stdio(0); cin.tie(0);cout<<fixed; cin>>n; for(inti=1;i<=n;i++) for(intj=1;j<=i;j++) cin>>a......
  • 我的呆宝小李 2
    老爹在抖音发现了小李还在她的评论区跟她打了声招呼我相当尴尬,真怕老爹说一些不合适的话我才刚认识,就让我把她带回家,,,,,我看了这个评论真想删掉,但是写评论的是我老爹啊,,,——————————————————————————小李很容易因为我的一些做法或者说的话而开心我想......
  • 关于 tar 的解压与压缩命令。
    解压命令: 我想解压的同时,把解压出来的文件夹重新命名可以吗?不行,没有搜到,可行的方法是,首先建立一个目录,然后解压到这个目录。例子:  、对于tar.gz这样的解压就是  tar-zxvf  这样的形式。对于tar.bz2这样的解压,就是tar-jxvf 这样的形式。 ......
  • 如何接收用户事件_以Button点击为例
    如何接收用户事件_以Button点击为例JavaFX中与用户进行交互的方式可以通过事件的回调。我们可以给一个控件(比如Button)绑定一个事件回调函数,当相关事件触发时(比如Button被点击),JavaFX将调用这个回调函数。以Button为例,在我们创建好Button后,调用setOnAction方法为其设......