柔性数组(C语言)

server/2024/9/24 6:46:29/
P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。
P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。

  

目录

1、柔性数组介绍


  柔性数组是指数组内的的元素个数是未知的,通常出现在C99环境下的结构体当中。
  在 C99 中,结构中的最后⼀个元素是未知⼤⼩的数组,这就叫做『柔性数组』成员。
  形如:
typedef struct st_type
{int i;int a[];//柔性数组成员
}type_a;




2、柔性数组的特点


  1.结构中的柔性数组成员前⾯必须⾄少⼀个其他成员。
  2.sizeof 返回的这种结构体⼤⼩不包括柔性数组的内存。
  3.包含柔性数组成员的结构⽤malloc ()函数进⾏内存的动态分配,并且分配的内存应该⼤于结构的⼤⼩,以适应柔性数组的预期⼤⼩。
  例如:
typedef struct st_type
{int i;int a[0];//柔性数组成员
}type_a;int main()
{int n = 0;type_a *p = (type_a*)malloc(sizeof(type_a)+100*sizeof(int));//柔性数组获得了一百个整型变量的空间。p->i = 100;for(n=0; n<100; n++){p->a[n] = n;}free(p);return 0;
}




3、结语


  十分感谢您观看我的原创文章。
  本文主要用于个人学习和知识分享,学习路漫漫,如有错误,感谢指正。
  如需引用,注明地址。


http://www.ppmy.cn/server/42999.html

相关文章

说些什么好呢

大一&#xff1a;提前学C和C。学完语法去洛谷或者Acwing二选一&#xff0c;刷300道左右题目。主要培养编程思维&#xff0c;让自己的逻辑能够通过代码实现出来。 现在对算法有点感兴趣但是没有天赋&#xff0c;打不了acm&#xff0c;为就业做准备咯。 大二(算法竞赛)&#xff1…

IS-IS链路状态数据库

原理概述 一个OSPF链路状态数据库是若干条LSA的集合。与此相似&#xff0c;一个IS-IS链路状态数据库是由若干条LSP的集合。与OSPF链路状态数据库不同&#xff0c;IS-IS链路状态数据库有Level-1和Level-2之分。 在IS-IS协议中&#xff0c;每一条LSA都有一条剩余生存时间、一个…

实现信号发生控制

1. 信号发生器的基本原理 信号发生器是一种能够产生特定波形和频率的电子设备&#xff0c;常用于模拟信号的产生和测试。 信号发生器的基本原理 信号发生器的工作原理基于不同的技术&#xff0c;但最常见的类型包括模拟信号发生器和数字信号发生器&#xff08;DDS&#xff0…

SQL——SELECT相关的题目

目录 197、上升的温度 577、员工奖金 586、订单最多的客户 596、超过5名学生的课 610、判断三角形 620、有趣的电影 181、超过经理收入的员工 1179、重新格式化部门表&#xff08;行转列&#xff09; 1280、学生参加各科测试的次数 1068、产品销售分析I 1075、项目员工I …

什么是 BIO、NIO、AIO?

BIO、NIO、AIO 都是 Java 的 IO 模型 BIO (Blocking IO) 是传统的 IO 模型&#xff0c;它在读写数据时会阻塞线程&#xff0c;直到数据读写完成&#xff0c;适用于并发不高的场景。 NIO (Non-blocking IO) 是 Java 的新 IO 模型&#xff0c;它在读写数据时不会阻塞线程&#…

结构化开发方法(数据流图)

一、系统设计基本原理 二、系统总体结构设计 三、数据流图 数据流图

【C++11】列表初始化,std::initializer_list和模版可变参数

一.列表初始化 一切对象都可以用大括号括起的列表来初始化。 //构造 Date d1(2024, 5, 24); Date d2{2024, 5, 24};//三个构造 new Date[3]{{2024, 5, 23}, {2024, 5, 24}, {2024, 5, 25}};//构造(隐式)拷贝构造 优化->一次构造 Date d3 {2024, 5, 24}; 二. std::initiali…

第二章 Linux的目录和文件管理

Linux的目录和文件管理 一、目录的结构 &#xff08;注意点&#xff09;/root是管理员的家目录&#xff0c;只有管理员的家目录是在根目录&#xff0c;普通用户的家目录都在home&#xff1b; /home &#xff1a; 普通用户的家目录。普通用户权限不够&#xff0c;一般无法直接…