c - 如何在 C 中创建具有两个可变大小数组的结构

标签 c arrays struct

我正在编写一个轻量级序列化函数,需要在其中包含两个可变大小的数组。

  • 我应该如何跟踪每个文件的大小?
  • 我应该如何定义结构?
  • 我是不是做错了?

编辑:结果必须是一个连续的内存块

最佳答案

这解析为类似的东西

typedef struct
{
   size_t arr_size_1, arr_size_2;
   char arr_1[0/*arr_size_1 + arr_size_2*/];
} ...;

大小应位于动态大小数据的前面,以便在扩展数组时它不会移动。

您的结构中不能有 2 个未知 大小的数组,因此您必须将它们折叠成一个,然后从第一个指针访问相关数据。

关于c - 如何在 C 中创建具有两个可变大小数组的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1223876/

相关文章:

c - 为什么使用\"%s\"时 sprintf 不工作?

c# - 将数组中的所有非零元素拉到左侧 - C#

javascript - JQuery,AJAX : How can I populate an array with a json return?

c - 修改结构体指针

c++ - std::vector of struct:调整 vector 大小后结构成员的初始值是多少?

c - 为什么 strtok_r 总是找到模式 "."?

c - 在c中使用fork并行进程在数组中搜索值

c - Makefile:不确定如何使用变量制作一个好的 makefile

JavaScript 循环正在更改数据源数组以及结果 - 为什么会这样?

C 在结构中初始化数组