c/c++

太菜了

前言

普通的函数值传递交换两个变量的值是无法实现的,如果传给swap函数的参数是两个变量地址的话,才能实现真正的值的交换。


提示:以下是本篇文章正文内容,下面案例可供参考

一、代码(指针变量作为函数参数)

1、记录自己写错的情况

void swap(int *p,int *q)
{
	int *tmp;
	tmp=p;
	p=q;
	q=tmp;
}

这里为什么是错的?
首先,我们把main函数里的a,b的地址传给指针p,q后,这就意味着p指向存放变量a的内存区域,q指向存放变量b的内存区域,我们想要改变a,b的值就是要改变p,q指向的内存区域的值,但是上述代码并没有这样做,上述代码只是让p指向q原来的内存区域,q指向p原来的内存区域,在主函数里面存放a,b变量内存区的值并没有改变,这个函数的最终效果就是产生了一个指向变量b的指针p,以及指向变量a的指针q而已。

2、正确代码

void swap(int *p,int *q)
{
	//我们的目标是改变a,b内存区的值,现在我们已经有了指向两个内存区的指针
	int tmp;
	tmp=*p;
	*p=*q;
	*q=tmp;
}

二、总结

再好好看看指针的相关内容,,哎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值