如何在指定索引后删除数组元素

时间:2016-09-21 23:08:16

标签: c arrays

我正在尝试删除索引大于或等于指定索引值的数组元素。

int values[] = {1,2,3,4,5,6,7};
int size_of_array = 7;
int specified_index = 3;

for(int i = size_of_array; i >= specified_index; size_of_array--){
  values[middle_index + 1] = NULL;
}

我对C很新,所以它仍然有点令人困惑。如果这是重复的,请道歉。

1 个答案:

答案 0 :(得分:1)

您无法在C中调整数组大小。一旦创建它的大小是固定的。 如果您可以使用动态内存和指针而不是数组,则可以使用realloc调整其大小。

然而,根据您的目的,您实际上并不需要调整数组的大小,您可以减少size_of_array并忽略其余值,例如:

size_of_array -= 4;

修改 通过忽略价值来澄清我的意思。我假设通过创建一个数组,你打算实际上使用它的元素,否则拥有数组将毫无意义。因此,当您对数组进行工作时,只需在您不忽略的元素上进行。让我们为了举例说明我们想要打印数组的值作为我们的" work":

void printArray(int *array, size_t size) {
    for (size_t itr = 0; itr < size; ++itr) { printf("%d", array[itr])); }
}

int main(int argc, char *argv[]) {
    int values[] = {1,2,3,4,5,6,7};
    int size_of_array = 7;
    int specified_index = 3;
    // Print the whole array
    printArray(values, size_of_array);
    // Print the 'shortened' array by ignoring the rest of the values
    size_of_array -= 4;
    printArray(values, size_of_array);
}