谁给我讲讲参数单向传递是意思啊!

来源:百度知道 编辑:UC知道 时间:2024/04/30 09:59:56
问题1:
#include <stdio.h>
void main()
{ void sort(int array[],int n);
int a[10], i;
printf("input the a[]:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("the sorted a[]:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
void sort(int array[],int n)
{ int i,j,k,t;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k])
k=j;t=array[k];array[k]=array[i];array[i]=t;
}
}
显示:
input the a[]:4↙5↙6↙7↙8↙12↙56↙78↙-1↙-9↙
the sorted a[]: -9 -1 4 5 6 7 8 12 56 78

问题2:
#include <stdio.h>
void main()
{ void swap(int x,int y);
int i,j;
i=2;j=4;
printf("before call i=%d,j=%d\n",i,j);
swap(i,j);
printf("called i=%d,j=%d\

上面一个函数sort以一个一维数组&数组长度作为形参,它的功能是对a[],&n操作进行排序,数组作为形参,其实是他的首地址a作为参数,函数所作的事情就是根据他的地址来修改地址中间的内容,就是说函数对他的参数:a这个首地址进行寻址&修改操作,这样就相当于达到修改实参的目的,而下面的函数直接使用swap对形参操作,这个就是相当于实参把自己的数值传给形参,然后函数也是对形参操作改变形参的数值但是对于实参没有影响。。。哎呀好像说得很烦啊,就是上面一个是使用的a这个首地址可以看成指针,通过指针修改地址里面的参数~~~

分太少了只能简单说^_^
双向传递的本质是地址传递,就是把变量的地址传递到母体;所以改变该地址的值也就改变了原来的变量;
单向传递是变量的传递,只能传递值,改变了母体变量的值,被调用方法的变量不变。

不是双向啦!当数组作形参时是值传递!即主涵数调用形参时,形参数组的改变就是主涵数数组的变化。这个跟一般变量的单向值传递是不同的!是地址传递呀!要区别哦。