传值调用并不能改变两个变量的值,而传址能。 为什么,因为,传值调用,仅仅是在函数内,调换参数的值。 而地址所指向的值,改变的不仅仅是函数内,函数外也改变。 请看代码: 这里还要注意:通常我们不会返回局部变量的地址. /* ************************************************************************ * Filename: main.cc * Description: * Version: 1.0 * Created: 2011年12月14日17时06分13秒 * Revision: none * Compiler: gcc * Author: YOUR NAME (), * Company: * ************************************************************************/ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> void swap_value(int x,int y) { int temp; temp = x; x = y; y = temp; printf("传值函数内的输出 %d %d \n",x,y); } void swap_address(int *x,int *y) { int temp; temp = *x; *x = *y; *y=temp; printf("传址函数内的输出 %d %d \n",*x,*y); } int main(int argc, char *argv[]) { int x = 10; int y = 0; printf("x y \n"); printf("初值 %d %d \n",x,y); //传值子程序调用(交换xy) swap_value(x,y); printf("传值函数外调用 %d %d \n",x,y); //传地址字程序调用(交换x,y) swap_address(&x,&y); printf("传址函数外调用 %d %d \n",x,y); return 0; }
|