我已经在 C 中定义了一个数组。我想实现一个代码,可以在数组中间插入一个新值(数组内的任何位置,除了第一个和最后一个位置)。因此,我编写了一个函数,它将接受三个参数 - 数组、要放置新值的位置以及将插入到该位置的值。但是当我执行程序时,最后一个元素丢失了,它显示了最后一个值 5,但在旧数组中,最后一个元素不是 5。你能告诉我哪里做错了吗?
#include <stdio.h>
void resize(int arr[], int position, int value);
int main(void)
{
int arr[] = { 10, 20, 60, 80, 10 };
resize(arr, 3, 90);
for (int i = 0; i < 6; i++)
{
printf("%d\n", arr[i]);
}
}
void resize(int arr[], int position, int value)
{
for (int i = 5; i >= position; i--)
{
arr[i] = arr[i - 1];
}
arr[position - 1] = value;
}
定义的数组不能被调整大小。已分配的数组可以重新分配。您的函数
resize
具有未定义的行为,因为它将 arr[4]
存储到 arr[5]
中,这超出了数组的末尾。