首页 > 解决方案 > 在插入数组时,做 n++ 会增加数组的大小吗?它实际上是否为数组分配了额外的传染性内存位置?

问题描述

C程序在数组中的特定位置插入元素:

是否实际分配了具有传染性的内存位置,并且在此代码运行时形成了大小增加的数组?

#include <stdio.h>
int main()
{
    int arr[100] = { 0 };
    int i, x, pos, n = 10;

    for (i = 0; i < 10; i++)
        arr[i] = i + 1;
 
    for (i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
    x = 50;
 
    pos = 5;
 
    // increase the size by 1
    n++;
 
    // shift elements forward
    for (i = n-1; i >= pos; i--)
        arr[i] = arr[i - 1];
 
    // insert x at pos
    arr[pos - 1] = x;
 
    // print the updated array
    for (i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
 
    return 0;
}

标签: arrayscmemory

解决方案


是否实际分配了额外的传染性内存位置,并且在此代码运行时形成了一个大小增加的数组?

不,一旦定义了数组,就像这里:

  int arr[100] = ...

它的大小是固定的(定义)。


推荐阅读