发布网友 发布时间:2022-04-26 16:05
共2个回答
热心网友 时间:2023-01-21 18:35
1)void swap(int a, int b)的参数属于值传递;
2)值传递需要一个中间变量,以你的程序为例:
swap(x,y);
它的实际过程是,先分配两个临时变量,a和b,这两个变量和传入的x、y占用不同的地址空间,程序先将x和y的值复制给a和b:
swap(a = x, b = y),之后在swap中所有的操作都是针对a和b进行的,与x和y无关,所以x和y的值在swap执行后依然保持不变。
3)地址传递也需要一个中间变量,但是这个中间变量保存的是地址,对于C语言你就需要用到指针变量,它可以保存一个普通变量的地址,通过改变这个地址里的内容就可以改变原变量的值。对于你的程序,如果想在调用swap后,x和y的值被改变,你需要定义成下面的样子:
#include <stdio.h>
void swap(int *,int *);//参数里的*号表示指针
void main()
{
int x=10,y=20;
printf("(1)a=%d y=%d\n",x,y);
swap(&x,&y);//x和y按地址传入
printf("(4)x=%d y=%d\n",x,y);//按地址传入,x和y的值被swap改变
}
void swap(int *pa, int *pb)//函数形参变成指针
{
int t;
printf("(2)a=%d b=%d\n",*pa,*pb); //访问指针的内容需要在指针前加*号
t=*pa;
*pa=*pb;
*pb=t;
printf("(3)a=%d b=%d\n",*pa,*pb);
}
}
3)关于指针的详细内容,由于篇幅有限,请参看C语言资料的相关章节。
热心网友 时间:2023-01-21 19:53
void swap (int a,int b)里的a和b都是值传递。
值传递意味着,void main()在调用swap(x,y)时,是将x变量和y变量拷贝了一个副本,然后将副本传给swap作为a变量和b变量。
传入时,从数值上来讲,有a=x和b=y;但是当a、b的数值发生改变时,x、y的数值是不会变化的。