C语言地址传递和值传递简析

1415阅读 0评论2012-02-24 yaoqigui
分类:C/C++

C语言没用引用传递,想用&引用传递,把.c改成.cpp,就能编译通过。 若参数传递的是简单数据类型的数值,则将其归类为值传递方式;若参数传递的是变量的地址,则视其为地址传递方式。 值传递过程中,被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。 而在地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。 下面我们用书上出现频率最高的一个程序来分别实现值传递过程和地址传递过程。 void swap(int x,int y) { int temp; temp=x; x=y; y=temp; printf("\n(swap):%d,%d\n",x,y); } void main() { int a,b; scanf("%d,%d",&a,&b); if(a