c - 如何删除指定索引后的数组元素

标签 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 的新手,所以还是有点困惑。如果这是重复的,我们深表歉意。

最佳答案

您不能在 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);
}

关于c - 如何删除指定索引后的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627835/

相关文章:

python - 无法将字符串转换为 float : 'K5'

c++ - 从本地范围返回值?

c - 如何在 C 中将十六进制数转换为 Ascii 码

c - c 中用于快速查找/插入/删除整数的数据结构(来自已知的有限域)

c - 我怎样才能得到 int 0x16 的值?

c# - 为什么 StringBuilder 比字符串操作快,但 List<T> 比 LinkedList<T> 快?

c - gcc -O3 标志会导致警告 -O2 不会

java - 反转 ArrayList 的顺序并合并两个 ArrayList

javascript - 对 JSON 数据中的分组数据进行格式化

python - 使用 PYTHON 更新 JSON 数组中的特定键