当前位置:   article > 正文

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

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

/*数组元素做参数,只能从实参将数值赋予形参(单向赋值),当用数组名做参数(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]);

}
*/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/数据科学创新者/article/detail/63079
推荐阅读
相关标签
  

闽ICP备14008679号