用指针交换两个变量的值

两个数的值进行交换
首先错误交换姿势:
因为形参是实参的副本(拷贝),它们只是值相同,
形参和实参都有各自的地址,所以对形参这个"假身"进行操作
实参的值是不会改变的

#include
#include
void swap(int x, int y)
{
	int temp;
	temp = x;
	x = y;
	y = temp;
}
int main()
{
	
	int a = 10;
	int b = 20;
	swap(10, 20);
	printf("a的值是%d  b的值是%d", a, b);
	system("pause");
}

结果

用指针交换两个变量的值_第1张图片
正确交换姿势
直接利用实参传递的地址对实参进行赋值操作
*x(解引用):根据房间号(内存地址),获取房间(内存地址)中的数据内容

#include
#include
void swap(int* x, int* y)//定义了两个指针类型的参数
{			     //指针x,y分别对应的值是a,b的地址
	int temp;	
	temp = *x;// 将a地址里面存储的值赋给temp
	*x = *y;//将b地址里面的数据内容复制给a地址中的数据内容
	*y = temp;//将temp的值赋给b (内存)地址中的数据内容
}
int main()
{
	
	int a = 10;
	int b = 20;
	swap(&a,&b);//a,b将地址分别传递给指针x,y
	printf("a的值是%d  b的值是%d\n", a, b);
	system("pause");
}

结果
用指针交换两个变量的值_第2张图片

你可能感兴趣的:(c语言,用指针交换两个变量的值)