我试图在给定数组中插入一个项目,但在输出中,最后一个元素不是由下面给出的代码获取的。任何人都可以解释我为什么这样?其实我不知道如何提供参考,但我尝试了一些东西。关于参考部分,我已经参考了n,但是当调用该函数时,它给出了运行时错误。有谁可以帮我这部分?
#include<stdio.h>
int insertAtGP(int *a, int *n, int item, int k)
{
int j;
j = *n - 1;
while(j >= k)
{
a[j+1] = a[j];
j--;
}
a[k] = item;
(*n)++;
}
int main()
{
int i;
int arr[] = {45, 50, 25, 61, 34};
insertAtGP(arr, 5, 30, 3);
for(i = 0; i <= 6; i++)
{
printf(" %d\n ",*(arr+ i));
}
}
答案 0 :(得分:2)
您的代码有未定义的行为。
您无法有效地索引数组的末尾,并且您的数组只有初始化程序中存在的元素数量的空间,即5。
答案 1 :(得分:0)
int arr[6] = {45, 50, 25, 61, 34};//Size after insertion is necessary. 5 < array size
int size = 5;//Actual data size of the original
insertAtGP(arr, &size, 30, 3);//2nd argument requires a pointer to int,
for(i = 0; i < size; i++)//use the updated value. = Does not include