arrays - 在插入数组时,做 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;
}
解决方案
是否实际分配了额外的传染性内存位置,并且在此代码运行时形成了一个大小增加的数组?
不,一旦定义了数组,就像这里:
int arr[100] = ...
它的大小是固定的(定义)。
推荐阅读
- flutter - 颤振本地通知无法在单击时导航到另一条路线
- flutter - 如何将动态列表类型转换为飞镖中的多维类型列表?
- date - 计算日期是否在日期范围列表之间 - Google 表格
- flutter - 如何在 json key:value 中插入占位符?扑
- c++ - 如何治疗 N
作为 N ? - c - 以下c如何输出垃圾?
- c# - 如何从 C# 程序集生成摩纳哥完成建议?
- r - R中的时间序列连接散点图(如图所示)
- r - sass_options() 中的错误:找不到函数“strrep”
- python - 导入 python 模块在命令行中有效,但在 python 3.8 shell 中无效