c - 在数组中的给定位置插入一个元素,最后几个元素没有显示在数组中

标签 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));
    }
}

最佳答案

您的代码有未定义的行为。

您不能有效地索引超过数组的末尾,并且您的数组只能容纳初始值设定项中存在的元素数,即 5。

关于c - 在数组中的给定位置插入一个元素,最后几个元素没有显示在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24552060/

相关文章:

c - 我们如何定义用于识别给定系列中特定序列的规则?

c++ - 使用 Eclipse 编译 xerces-c++ 程序

c++ - opus_encoder_create() 返回空指针

c - 为什么要在 c 中关闭管道?

c - kruskal 在 c 中实现邻接表或邻接矩阵

c++ - 线程和 fork()。我该如何处理?

c++ - Opengl 未定义行为

c++ - 从 RGB BMP 创建灰度 BMP

c - 打印字符串中的中间单词。 C编程

c - 绑定(bind)错误-Socket编程