用指针交换两个变量的值

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

#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");
}

结果
在这里插入图片描述

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值