我正在尝试删除索引大于或等于指定索引值的数组元素。
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 的新手,所以还是有点困惑。如果这是重复的,我们深表歉意。
您不能在 C 中调整数组的大小。一旦创建,它的大小就固定了。
如果您可以使用动态内存和指针而不是数组,您可以使用 realloc
调整它的大小。 .
但是根据您的目的,您实际上并不需要调整数组的大小,您可以只减小 size_of_array
并忽略剩余的值,例如:
size_of_array -= 4;
编辑:
澄清我忽略值(value)的意思。我假设通过创建一个数组,您实际上打算对其元素进行一些处理,否则拥有该数组将毫无意义。因此,当您对数组进行操作时,只需对您没有忽略的元素进行操作。举个例子,我们想打印数组的值作为我们的“工作”:
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);
}