C编程:删除存储在Array中的特定值

时间:2014-07-03 05:03:57

标签: c arrays

让我们考虑一个数组(比如int a[25];)。 稍后在某个循环的帮助下,我开始将用户输入存储在此数组中。

在某些时候,如果用户选择删除他刚刚从数组输入的值。

如何为我的程序用户执行此操作。

我可以将其设为0,但0也是他可以输入的值;所以我只想把它变成NULL或带有一些垃圾值,就像我初始化数组时一样。

2 个答案:

答案 0 :(得分:2)

你不能。

如果你定义

int a[25];

然后a由25个int元素组成。一旦为其赋值,每个元素都会保留该值,直到它被重新分配,或者直到数组不再存在为止。你不能删除"数组中的值。整数没有特殊的NULL值,因为有指针。

您可以选择一个特殊值,表示"空" element(也许是INT_MIN) - 但是您无法将该值存储为数据。或者您可以使用另一个数据结构(可能是bool数组)来跟踪a的每个元素的当前值是否有效。

答案 1 :(得分:2)

您无法从数组中删除元素。在C数组中存储为连续的内存块,因此您无法删除元素。您可以使用以下任何选项:

  1. 使用一些未使用的值,例如-1,将该元素标记为已删除。
  2. 使用单独的数组来跟踪已删除的元素。
  3. 使用链接列表存储元素(推荐选项)。