C语言_函数_地址和指针:值传递和地址传递的区别

首页 / 新闻资讯 / 正文

函数调用中,实参的数据和形参对应传递,有两种传递方式:

1.值传递(只传送值,实参不做改变)
2.地址传递(传送地址,实参被改变)

# include <stdio.h>  void swap(int, int);  int main(void) {	 	int x = 10, y = 20;  	printf("(1)x=%d y=%d\n", x, y);  	swap(x, y);				//调用函数swap 	printf("(4)x=%d y=%d\n", x, y); 	return 0; }  void swap(int a, int b)		//void:没有返回参数 { 	int t;  	printf("(2)a=%d b=%d\n", a, b); 	t=a; a=b; b=t; 	printf("(3)a=%d b=%d\n", a, b); }  /* 结果: (1)x=10 y=20 (2)a=10 b=20		 (3)a=20 b=10		 (4)x=10 y=20		值传递,只传送值,实参不做改变 请按任意键继续. . . */ 
# include <stdio.h>  void swap(int *, int *);		//形参是指针变量  int main(void) { 	int x = 30, y = 20; 	 	printf("(1)x=%d y=%d\n", x, y);  	swap(&x, &y); 	printf("(4)x=%d y=%d\n", x ,y);		/* 	通过传递地址值 	在被调用函数中 	直接改变调用函数中的变量的值*/ 	 	return 0; }  void swap(int *a, int *b) { 	int t;  	printf("(2)a=%d b=%d\n", *a, *b);  	t = *a;		//*a :取a中的地址所指向的空间的值 	*a = *b; 	*b = t;  	printf("(3)a=%d b=%d\n", *a, *b); }  /*结果: (1)x=30 y=20 (2)a=30 b=20 (3)a=20 b=30 (4)x=20 y=30	地址传递,实参被改变 请按任意键继续. . . */