C语言之地址传递和引用传递的问题
作者:donoot
这篇文章主要介绍了C语言之地址传递和引用传递的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
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变量。
此二类有关函数中的地址传递和引用传递务必熟练掌握领会。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。