这个程序真邪门了,谁能帮我理解一下这个题的用意!

来源:百度知道 编辑:UC知道 时间:2024/05/14 09:15:53
以下程序:

void swap1(int c[])
{int t;
t=c[0];c[0]=c[1];c[1]=t;
}
void swap2(int c0,int c1)
{
int t;
t=c0;c0=c1;c1=t;
}
main()
{ int a[2]={3,5},b[2]={3,5};
swap1(a);
swap2(b[0],b[1]);
printf ("%d %d %d %d\n",a[0],a[1],b[0],b[1]);

运行的结果是 5 3 3 5
swap2 的运行结果怎么回事3 5 呢 为什么不是 5 3啊???

swap1函数接收的是 a数组的值
而swap2函数接收的是 b数组的元素地址
建议仔细看下C语言数组一章

因为swap2函数是值传递,而swap1是地址传递,所以swap2不改变原数组

swwap2(),b[0],b[1]只是把值赋给c0,c1.改变的只是c0,c1.自己是不会便的。