查找结构数组中的记录数

时间:2018-05-02 08:17:03

标签: c arrays data-structures struct

假设我们有一个最多50个元素的结构数组,它们将依次从缓冲区写入函数中添加。如果尚未达到最大项目数,如何找到阵列中的当前录制数量?

typedef struct
{
    remoteInstructionReceived_t instruction;
    uint16_t parameter;
} instructionData_type;

remoteInstructionReceived_t commandBuffer[50];

3 个答案:

答案 0 :(得分:1)

C数组是固定大小的:数组中总是有50个对象。如果你的程序逻辑要求其中一些是"不活动" (例如,尚未写入),您必须单独跟踪此类信息。例如,您可以使用size_t变量来存储"有效"的数量。数组中的条目。

另一种方法是将remoteInstructionReceived_t的值指定为终止符,类似于0如何用作NUL终止字符串的终止符。然后,你不必跟踪"有用的长度"数组的单独,但你必须确保终结符始终跟在其中的最后一个有效项。

通常,长度跟踪可能更有效,更易于维护。我只是提到完整性的第二个(终结者)选项。

答案 1 :(得分:0)

你不能,C不知道变量"是否有值"。所有值都是值,没有任何值比其他值更真实。

答案是需要额外的状态,即某种形式的计数器变量来保存这些信息。通常,您在插入新记录时使用它,以了解下一条记录的去向。

答案 2 :(得分:0)

您是否考虑过使用其他数据结构?例如,您可以包装结构以允许创建链接列表。通过释放内存,删除将是真实的。此外,它对某些类型的操作更有效,例如列表中间的addin元素。