用指针交换两个变量的值

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

#include<stdio.h>
#include<stdlib.h>
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");
}

结果

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

#include<stdio.h>
#include<stdlib.h>
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");
}

结果
《用指针交换两个变量的值》

    原文作者:Electronic_rest
    原文地址: https://blog.csdn.net/Electronic_rest/article/details/102559541
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞