C语言四种swap函数

C语言四种swap函数

/*
 * 实参传形参时,
 * 形参临时复制实参的存储空间,
 * 在临时分配的空间对a,b进行改变,
 * 函数执行完成后,形参分配的空间自动释放,
 * 最终,形参所做的任何变化对实参无影响,
 * a与b的值换交换不成功
 */
void swap(int a,int b) 
{
	int temp;

	temp = a;

	a = b;

	b = temp;

}  //对形参操作
/*
 * 实参传引用型形参时,
 * 传入实参的地址,
 * 对形参所做的变化是对所指实参地址内容所做的变化
 * 改变的是实参所指地址中存放的值,
 * 形参虽释放,但实参地址中的值改变,
 * a与b的值交换成功
 */
void swap(int &a,int &b) 
{
	int temp;

	temp = a;

	a = b;

	b = temp;

}  //对地址操作
/*
 * 实参传指针型形参时,
 * 指针形参临时复制实参的存储空间,
 * 在临时分配的指针形参空间内,
 * 对形参指针(地址)进行改变(交换),
 * 临时空间中指针的指向地址改变(交换),
 * 函数执行完成后,形参分配的空间自动释放,
 * 最终,形参所做的任何变化对实参无影响,
 * a与b的值换交换不成功
 */
void _swap(int *a,int *b) 
{
	int *temp;

	temp = a;

	a = b;

	b = temp;

}  //对形参操作
/*
 * 实参传指针型形参时,
 * 传入实参的地址,
 * 对指针形参所做的变化,
 * 是对指针形参所指的实参地址中的内容所做的变化,
 * 改变的是实参所指地址中存放的值,
 * 指针形参虽释放,但实参地址中的值改变,
 * a与b的值交换成功
 */
void swap(int *a,int *b) 
{
	int temp;

	temp = *a;

	*a = *b;

	*b = temp;

}  //对地址操作
/****************************************
	       完整代码  swap.cpp
*****************************************/

#include<stdio.h>


void swap_1(int a, int b) 
{
	int temp;

	temp = a;

	a = b;

	b = temp;

}  


void swap_2(int &a, int &b) 
{
	int temp;

	temp = a;

	a = b;

	b = temp;

}  


void swap_3(int *a, int *b) 
{
	int *temp;

	temp = a;

	a = b;

	b = temp;

}  


void swap_4(int *a, int *b) 
{
	int temp;

	temp = *a;

	*a = *b;

	*b = temp;

}  


int main()
{
	int a = 5;
	int b = 4;

	printf("a=%d, b=%d\n", a, b);	
	swap_1(a, b);
	printf("result of swap_1:\ta=%d, b=%d\n", a, b);

	printf("a=%d, b=%d\n", a, b);
	swap_2(a, b);
	printf("result of swap_2:\t%a=%d, b=%d\n", a, b);

	printf("a=%d, b=%d\n", a, b);
	swap_3(&a, &b); 
	printf("result of swap_3:\ta=%d, b=%d\n", a, b);

	printf("a=%d, b=%d\n", a, b);
	swap_4(&a, &b);
	printf("result of swap_4:\ta=%d, b=%d\n", a, b);

	return 0;
}

在这里插入图片描述

  • 45
    点赞
  • 244
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值