建议结束整数数组标记

时间:2012-06-26 09:35:02

标签: c arrays data-structures int

我在C中有一个固定大小的数组。在那里,我可能有任何数量(小于数组大小)的有用元素。现在我只需要我有用的元素。所以我想为整数数组使用end of array标记。首先


a)这可能吗?

b)如果可能,怎么做?

6 个答案:

答案 0 :(得分:3)

我会采取略微不同的方法

struct IntArray
{
  int data[N];
  int size; // <-- use this to keep track of the size.
}

答案 1 :(得分:3)

逻辑上,你可以找到可以作为END_OF_ARRAY的唯一整数,并且在你的有用数字集中不会出现...

你只需要在结尾处明确地添加它...并在稍后检查数字以指示结束

答案 2 :(得分:2)

这取决于它是一个数组以及哪些值是有效的。

你说你有一个int数组,使用任何对列表无效的值。如果所有条目均为正数,则使用负数作为结尾。如果值均低于INT_MAX,请将其用作结束标记。

答案 3 :(得分:1)

您始终可以将数组视为缓冲区并跟踪当前有用元素的数量。

struct buffer 
{ 
     int* array;
     size_t size;
}

答案 4 :(得分:0)

是,创建一个名为end_of_array_marker的整数变量。

它需要比这更复杂吗?

答案 5 :(得分:0)

有两种方法可以做到这一点(如果int值可能具有int的任何可能值)。


第一个选项:存储数组中元素的数量,如果添加/删除项目,则增加值。

int count;
int *array;

第二个选项:使用指向数组中下一个变量的指针构建一个结构。如果它NULL已到达列表的末尾。

struct Item {
    int i;
    struct Item *next;
}
// pointing at the start adress:
struct Item *start = NULL;
// adding first item:
start = malloc(sizeof(struct Item));
start->i = 123;
start->next = NULL // mark the current end of list (not needed if you add a value right after the first)
// adding second item:
start->next = malloc(sizeof(struct Item));
start->next->i = 456;
start->next->next = NULL
// etc