插入和执行一个操作循环退出后,数组操作面临数组大小更改的问题

问题描述

***头文件*** 请帮助我找出错误,为什么我的代码在我的指令前退出

 #include <stdio.h>
   #include <stdlib.h>
   #include <conio.h>

显示

为什么遍历数组元素时没有数组元素不变,而仅打印所有最初的元素

  int display_array(int arr[],int n)
    {
        int i;
        for (i = 0; i < n; i++)
        {
            printf("arr[%d] = %d\n",i,arr[i]);
        }
        return 0;
    }

插入

   int insert_position(int arr[],int n)
    {
        int i = 0,pos,num;
        printf("Enter the number to be inserted:\n");
        scanf("%d",&num);
        printf("enter the pposition at which the number is to be inserted:\n");
        scanf("%d",&pos);
        for (i = n - 1; i >= pos; i++)
        {
            arr[i + 1] = arr[i];
        }
        arr[pos] = num;
        n = n + 1;
        return 0;
    }

删除

 int delete_position(int arr[],pos;
        printf("Enter the position from which the number has to be deleted:\n");
        scanf("%d",&pos);
    
        for (i = pos; i < n - 1; i++)
        {
            arr[i] = arr[i + 1];
        }
        n = n - 1;
        return 0;
    }

驱动程序

解决方法

我认为您在这些函数中将这些参数作为按值传递,而不是按引用传递。这就是为什么每次调用初始值时都会打印它们。 您可以使用指针,也可以使用全局变量来获得所需的结果。