通过改变形参数组来改变实参数组例子

/*数组元素做参数,只能从实参将数值赋予形参(单向赋值),当用数组名做参数(int a[])=(int * a)内存在处理数组型的形参时,
是同过将数组变量转化为指针变量,由形参接受来自实参的数组的地址,相当于对数组进行“赋值”(实际上数组名做实参时,并不是为形参数组赋值,
而是将实参数组的首个元素的地址传递给形参数组,这样子两个数组就占用同一块内存地址,即形参也占据一个内存单元,且和实参是同一个内存单元。
也就意味着,更改形参数组的值,实参数组的元素也会发生改变,这一点可以拿来应用)。

/*
通过选择法对数组中的十个整数进行从小到大的排序
所谓选择法,即将十个数中最小的数与a[0]对调,然后将就个数中最小的数与a[1]对调……每一轮找出一个最小的数
int main()
{
    void compare(int n, int array[]);
    int a[10];
    int i;
    printf("put in:");
    for (i = 0; i <= 9; i++)
    {
        scanf_s("%d",&a[i]);
    }
    compare(10,a);

    return 0;
}
void compare(int n,int array[])//通过形参数组重新排序改变实参数组
{
    int i,j,t;
    for (i=0;i<=n-2;i++)//n个数的选择法需要n-1轮的“对调”,i从0开始,故写成n-2
    {
        for (j = 0; j <= n - 2 - i ; j++)//第一次比较n-1,第二次比较n-2.i第一轮是10个,比较9次,第二轮是9个,比较8次……。
        {
            if (array[i] > array[i + 1 + j])
//i为外层,每次会决定一个数组元素的固定在,如第一次a0,第二次a1……。因此可利用i(对于内函数一次循环而言,i的值是固定的),
//符合选择法的思想(一个确定的数和接下来的所有数进行比较)。
            {
                t = array[i];
                array[i] = array[i + 1 + j];
                array[i + 1 + j] = t;
            }
        }printf("%d", array[i]);
    }printf("%d",array[9]);
}
*/
/*C程序设计课本解法
int main()
{
    void compare(int n, int array[]);
    int a[10];
    int i;
    printf("put in:");
    for (i = 0; i <= 9; i++)
    {
        scanf_s("%d", &a[i]);
    }
    compare(10, a);

    return 0;
}
void compare(int n, int array[])
{
    int i, j, k, t;
    for (i = 0; i <= n - 2; i++)//10个数需要比较9次
    {
        k = i;
        for (j=i+1;j<=n-1;j++)//留下除a[i]后的所有数
        {
            if (array[j]<array[k])
            {
                t = array[k];
                array[k] = array[j];
                array[j] = t;
            }
        }
        printf("%d\t",array[i]);
    }printf("%d\t", array[n - 1]);

}
*/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值