swap()交换函数【引用】【指针】【指针引用】

本文介绍了C++和C语言中swap函数的四种实现方式,包括按值传递、指针传递、指针引用传递以及交换指针引用的地址。详细解析了每种方式下变量值的交换逻辑,强调了指针引用在函数参数传递中的特殊性,以及如何通过指针引用实现真正的数值交换。
摘要由CSDN通过智能技术生成

swap()交换函数【引用】【指针】【指针引用】

涉及基础知识

C语言的变量,就是将系统分配的地址取个别名,所以变量名就是地址。

引用是一个变量的另一个名字,又称别名。
定义方式:
int a=10;
int &b=a;
在这里,意思就是给a变量起了一个新名字b,因此b不可再次被重新定义。
引用必须初始化,无空引用,并且引用不分等级。

函数的定义
类型 函数名(形参) { }
在这里插入图片描述

一、理解

1. 按值传递时,函数不会访问当前调用的实参,因此本体就不会交换,交换的只是通过函数形参复制过来的值。函数处理的值是它本地的拷贝,这些拷贝被存储在运行栈中,因此改变这些值不会影响实参的值。一旦函数结束了,函数的活动记录将从栈中弹出,这些局部值也就消失了。在按值传递的情况下,实参的内容没有被改变。这意味着程序员在函数调用时无需保存和恢复实参的值。

//值传递,*不改变a,b的值*
void swap(int a, int b)
{
   
	int temp=0;
	temp = a;
	a = b;
	b = temp;
}

2. 函数的形参设为指针,然后将指针上对应的数值进行交换,地址上的值就会改变。由于传递的是两个变量的内存地址(指针)使得我们可以直接操作对应的值。

void swap(int *a, int *b)
{
   
	int temp=0;
	temp = *a;
	*a = *b;
	*b = temp;
}

3. 将函数的参数设为指针的引用,只交换指针的数值,实质上的值没有交换。

什么叫做指针的引用,就是给传入函数的指针起个别名,实质上变了名字后还是指针。

void prswap(int *&a, int *&b)//换了个名字的指针,叫指针的引用
{
   
	int *temp = a;
	a = b;
	b = temp; 
}

int main()
{
   
	int x = 100;
	
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值