在数组中的给定位置插入元素,最后几个元素不会显示在数组中

时间:2014-07-03 11:06:43

标签: c

我试图在给定数组中插入一个项目,但在输出中,最后一个元素不是由下面给出的代码获取的。任何人都可以解释我为什么这样?其实我不知道如何提供参考,但我尝试了一些东西。关于参考部分,我已经参考了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));
    }
}

2 个答案:

答案 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