在C语言中函数的参数传递方式主要有两种:
一种是普通变量传递数值,另一种为使用指针变量传递地址;
如下列程序,程序扩展名为C
//本程序名为:地址传递.c
#include<stdio.h>
void exchg(int *px,int *py){
//此类是针对地址处的数值进行变化,指针关系不动
int tmp=*px;
*px=*py;//地址处的数值变化
*py=tmp;
//此类仅仅转换地址,地址处的数值并无变化
/*
int *tmp;
tmp=px;
px=py;
py=tmp;
*/
}
int main()
{
int a=4,b=6;
exchg(&a,&b);
printf("a=%d,b=%d。\n",a,b);
return 0;
}
此程序中,输出结果为a=6,b=4。实现数值转换。
参数传递中还有一种被称为是“引用传递”,目前C语言不支持该类型的传递,但是C++支持。看下列程序:
//本程序名为:引用传递.cpp
#include <stdio.h>
int exchg(int &x,int &y){
int tmp=x;
x=y;
y=tmp;
printf("x=%d,y=%d\n",x,y);
return 0;
}
int main(){
int a=6,b=4;
printf("a=%d,b=%d\n",a,b);
exchg(a,b);
printf("a=%d,b=%d\n",a,b);
return 0;
}
此程序代码中exchg(int &x,int &y)函数会将a,b分别代替x,y,此时x,y分别引用了a,b变量。
此二类有关函数中的地址传递和引用传递务必熟练掌握领会。