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

C语言复习--柔性数组

        柔性数组是C99中提出的一个概念.结构体中的最后⼀个元素允许是未知大小的数组,这就叫做柔性数组成员。

        格式大概如下

struct S
{
    int a;
    char b;
    int arr[];//柔性数组
};

也可以写成

struct S
{
    int a;
    char b;
    int arr[0];//柔性数组
};

柔性数组的特点

柔性数组的使用

#include<assert.h>
struct S
{int a;char b;int arr[];//柔性数组
};
int main()
{//柔性数组和其所在的结构体的空间都是malloc来的struct S* ptr = (struct S*)malloc(sizeof(struct S) + sizeof(int) * 10);assert(ptr);ptr->a = 10;ptr->b = 'x';for (int i = 0; i < 10; i++){*(ptr->arr + i) = i;}printf("%d %c\n", ptr->a, ptr->b);for (int i = 0; i < 10; i++){printf("%d ", ptr->arr[i]);}printf("\n");//如果觉得空间不够还可以用realloc来扩容//要释放空间free(ptr);ptr = NULL;return 0;
}

柔性数组的优势

        上面的代码也可以用下面的代码来实现.两者功能完全相同.

#include<assert.h>
struct S
{int a;char b;int* arr;//柔性数组
};
int main()
{struct S* ptr = (struct S*)malloc(sizeof(struct S));assert(ptr);ptr->arr = (int*)malloc(sizeof(int) * 10);assert(ptr->arr);ptr->a = 10;ptr->b = 'x';for (int i = 0; i < 10; i++){*(ptr->arr + i) = i;}printf("%d %c\n", ptr->a, ptr->b);for (int i = 0; i < 10; i++){printf("%d ", ptr->arr[i]);}printf("\n");free(ptr->arr);ptr->arr = NULL;free(ptr);ptr = NULL;return 0;
}

        以上就是我了解到的柔性数组了.希望有所帮助.

http://www.dtcms.com/a/182909.html

相关文章:

  • Vite Proxy配置详解:从入门到实战应用
  • Activity动态切换Fragment
  • 养生:为健康生活添彩
  • 【Linux第三章】vim
  • 达索PLM系统是什么?有什么用?
  • 亿级流量系统架构设计与实战(六)
  • 【MySQL】事务(重点)
  • 【计算机视觉】OpenCV实战项目:FunnyMirrors:基于OpenCV的实时哈哈镜效果实现技术解析
  • PyTorch API 9 - masked, nested, 稀疏, 存储
  • Linux 阻塞和非阻塞 I/O 简明指南
  • 复习javascript
  • Python_day21
  • 基于大模型的新型隐球菌脑膜炎智能诊疗全流程系统设计与实现的技术方案文档
  • 青少年编程与数学 02-019 Rust 编程基础 05课题、复合数据类型
  • 【从零实现JsonRpc框架#1】Json库介绍
  • Edububtu 系统详解
  • ASCLL码(T^T
  • 前端进化论·JavaScript 篇 · 数据类型
  • Python面向对象编程:初识类与对象
  • 数据库故障排查指南:从连接问题和性能优化
  • 逆向学习笔记(代码)
  • leetcode504.七进制数
  • Java基础 5.10
  • JavaSE核心知识点02面向对象编程02-05(方法)
  • 《向上生长》读书笔记day5
  • Dockers部署oscarfonts/geoserver镜像的Geoserver
  • Ansible模块——从控制节点向目标主机复制文件!
  • 软考错题集
  • 使用互斥锁保护临界
  • (51单片机)LCD显示红外遥控相关数字(Delay延时函数)(LCD1602教程)(Int0和Timer0外部中断教程)(IR红外遥控模块教程)