函数参数传递是按值传递还是按地址传递?该如何处理
函数参数传递是按值传递还是按地址传递?
这个跟函数参数的类型有关系吗?比如程序两个数交换.
#include <stdio.h>
swap();
main()
{
int a;
int b;
scanf( "%d%d ",&a,&b);
printf( "交换前a=%d,b=%d\n ",a,b);
swap(a,b);
printf( "交换后a=%d,b=%d\n ",a,b);
}
int swap(int x,int y)
{
int z=0;
x=z;
x=y;
z=y;
}
这里没有交换,是不是跟传递参数的类型有关.请高手解答这个问题.
------解决方案--------------------
int swap(int x,int y)
{
int z=0;
x=z;
x=y;
z=y;
}
===========
这是值传递
------解决方案--------------------
C语言中没有真正的地址传递,需要的话,你可以通过传递指针来达到那个效果,就像scanf那样。
------解决方案--------------------
c语言是传值的
c++还可以传引用
这个跟函数参数的类型有关系吗?比如程序两个数交换.
#include <stdio.h>
swap();
main()
{
int a;
int b;
scanf( "%d%d ",&a,&b);
printf( "交换前a=%d,b=%d\n ",a,b);
swap(a,b);
printf( "交换后a=%d,b=%d\n ",a,b);
}
int swap(int x,int y)
{
int z=0;
x=z;
x=y;
z=y;
}
这里没有交换,是不是跟传递参数的类型有关.请高手解答这个问题.
------解决方案--------------------
int swap(int x,int y)
{
int z=0;
x=z;
x=y;
z=y;
}
===========
这是值传递
------解决方案--------------------
C语言中没有真正的地址传递,需要的话,你可以通过传递指针来达到那个效果,就像scanf那样。
------解决方案--------------------
c语言是传值的
c++还可以传引用