C语言的传值与传址调用

传值调用并不能改变两个变量的值,而传址能。

为什么,因为,传值调用,仅仅是在函数内,调换参数的值。

而地址所指向的值,改变的不仅仅是函数内,函数外也改变。

请看代码:

这里还要注意:通常我们不会返回局部变量的地址.

/* ************************************************************************
* 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;
}



posted @ 2011-12-14 20:38  hnrainll  阅读(5578)  评论(0编辑  收藏  举报