我正在尝试删除索引大于或等于指定索引值的数组元素。
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很新,所以它仍然有点令人困惑。如果这是重复的,请道歉。
答案 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);
}