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

2023年2月15日09:29:24

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

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	地址传递,实参被改变
请按任意键继续. . .
*/

  • 作者:大头白菜
  • 原文链接:https://blog.csdn.net/sk_girl/article/details/108366314
    更新时间:2023年2月15日09:29:24 ,共 769 字。