用c语言编!向一维数组中第 i 个元素前插入一新的元素。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c语言编!向一维数组中第 i 个元素前插入一新的元素。相关的知识,希望对你有一定的参考价值。

int a[100];//定义数组
...假设对数组赋值,不知道你有没有这步骤
int j;
for(j=99;j>i;j--)

a[j]=a[j-1];


a[i]=c;//c为要插入的元素
插入元素后,原来数组元素一次后移,最后一个丢弃
参考技术A int insert(int* array,int n,int pos,int fresh)
int re=array[n-1];
for(int i=n-1;i>=pos+1;i--)
array[i]=array[i-1];

array[pos]=fresh;
return re;

n为数组长度,pos 是位置从零开始,fresh是新的数据,return 被抛弃的最后一个元素,建议用链表

数组参数和指针参数

1.C语言中只会以值拷贝的方式传递参数

2.当向函数传递数组时,将数组名看做常量指针传数组首元素地址

3.二维数组参数同样存在退化的问题,二维数组可以看做是一维数组,二维数组中的每个元素是一维数组

4.二维数组参数中第一维的参数可以省略

5.C语言中无法向一个函数传递任意的多维数组

6.为了提供正确的指针运算,必须提供除第一维之外的所有维长度

7.限制:一维数组参数-必须提供一个标志数组结束位置的长度信息

        二维数组参数-不能直接传递给函数

        三维或更多维数组参数-无法使用

#include <stdio.h>

void access(int a[][3], int row)
{
    int col = sizeof(*a) / sizeof(int);
    int i = 0;
    int j = 0;
    
    printf("sizeof(a) = %d\n", sizeof(a));
    
    for(i=0; i<row; i++)
    {
        for(j=0; j<col; j++)
        {
            printf("%d\n", a[i][j]);
        }
    }
}

int main()
{
    int a[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}};
    
    access(a, 3);
}


以上是关于用c语言编!向一维数组中第 i 个元素前插入一新的元素。的主要内容,如果未能解决你的问题,请参考以下文章

求一个一维数组中第二大的元素,及其在原数组中的下标。

c语言编程,已经从小到大排好的一维9元素数组在插入一个数,按顺序,怎么写程序?谢谢

C程中如何计算数组(一维及二维)占内存空间的大小

编写C程序,在给定数组的第i个元素前插入元素b,i与b的值由键盘输入。

数组参数和指针参数

用C语言实现一维数组中删除第N个元素的程序怎么写