c - c中动态增加结构体实例

标签 c

我有一个结构

typedef struct
{
    UINT32 num_pairs;
    UINT32 value;
}
SCSI_ENTRIES;

我需要动态实例化该结构的对象。

for (int i = 0; i < 50; i++)
{
    if ( port[i] )
    {
        port_valid_count += 1;

        // Please tell me how to instantiate 
        // SCSI_ENTRIES objects dynamically, 
        // based on port_valid_count.

        // Something like SCSI_ENTRIES entries[port_valid_count] ;
    }
}

每次 port_valid_count 增加时,我都需要增加该结构的对象。

最佳答案

有两种方法可以做到这一点。一种是有 2 个项目,一个固定大小的结构体和一个用于保存数组的可变大小的空间 block 。结构中的指针将指向可变大小的 block ;该结构还将保存可变大小块中的项目数。另一种方法是使用单个可变大小的空间 block 来容纳 N 个数组项。我建议您搜索并阅读“C 中的可变长度数组”和类似内容。 (这不是一个容易在这里回答的小话题。)

以下是出发点: Variable length arrays in structvariable size struct .

关于c - c中动态增加结构体实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26516293/

相关文章:

c - 如何获取 C 中 float 组的顶部索引并将其与存储在另一个数组中的字符串配对

c - IPC - Linux 中的共享编程程序

c - split 的意外结果

c - 不明白这个 for 循环是如何工作的

c - ANSI C S-Linked List - deleteLast() 无法正常工作

c - 开发一个用户定义的函数以非降序对数组进行排序

c++ - C/C++。库相对于组合目标文件的优势

c - 我的程序中的什么导致了异常 c0000005? (可能是内存错误)

创建生成文件

C语言编译