问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

5、使用C语言编写一个函数,用于交换两个变量的值(地址传递)。

发布网友 发布时间:2023-06-27 03:27

我来回答

1个回答

热心网友 时间:2023-10-08 09:58

不知道你要交换的两个变量类型,所以这里以整型数据交换为例,以下swap函数实现了交换两个整型变量值的功能:

#include <stdio.h>

// 交换给定指针指向整型变量的值。
// 参数:
//a -> 指向第一个变量的指针
//b -> 指向第二个变量的指针
void swap(int* a, int * b);

int main(int argc, int argv)
{
int a = 3, b = 5;
printf_s("交换前:a = %d, b = %d\n", a, b);
swap(&a, &b);
printf_s("交换后:a = %d, b = %d\n", a, b);
return 0;
}

// 交换给定指针指向整型变量的值。
// 参数:
//a -> 指向第一个变量的指针
//b -> 指向第二个变量的指针
void swap(int* a, int* b)
{
// 声明一个临时变量,保存第一个指针指向变量
// 的值。
// 其中 *a 是取出 a 指针指向变量的值
int temp = *a;
// 将 b 指针指向的值赋值给 a 指针指向变量
(*a) = (*b);
// 将临时变量 temp 中保存的 a 指针指向变量的值赋值给
// b 指针指向的变量。
(*b) = temp;
}

以上代码运行结果如下:

以下代码实现了使用宏定义作为模板,声明不同类型交换函数的功能,以下以声明double和float为例:

#include <stdio.h> 

// 声明一个函数代码模板,逻辑参考 swap(int* a, int* b)
#define DEF_SWAP_FUNC(Type) void swap_##Type(Type* a, Type* b) \
{ \
Type temp = (*a); \
(*a) = (*b); \
(*b) = temp; \


// 使用模板声明并实现一个 double 类型变量交换函数,函数名为 swap_double
DEF_SWAP_FUNC(double)

// 使用模板声明并实现一个 float 类型变量交换函数,函数名为 swap_float
DEF_SWAP_FUNC(float)

int main(int argc, int argv)
{
// double 类型数据交换
double da = 5.6, db = 3.5;
printf_s("double 交换前:da = %lf, db = %lf\n", da, db);
swap_double(&da, &db);
printf_s("double 交换后:da = %lf, db = %lf\n", da, db);

// float 类型数据交换
float fa = 3.4, fb = 6.8;
printf_s("float 交换前:fa = %f, fb = %f\n", fa, fb);
swap_float(&fa, &fb);
printf_s("float 交换前:fa = %f, fb = %f\n", fa, fb);

return 0;
}

运行结果如下:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
iOS 16.1.1值得更新升级吗 ios16.1.1正式版建议更新吗 iOS 16.1.1修复了哪些问题 ios16.1.1值得更新吗?ios 16.1.1新增内容及更新建议 iPhone 12升级iOS 16.1.1之后好用吗 iOS 16.1.1更新内容介绍 iOS 16.1正式版新增了哪些新功能?iOS 16.1正式版值得升级吗? ios 16.1正式版解决了哪些问题和BUG ...森先生是他“最好的老师” 你喜欢这样的老师吗? ... 你喜欢怀特森这样老师吗?说说你的看法.250字 一首歌一开始不喜欢,但天天听,经常听,就会喜欢这首歌了,还会试着跟唱,据说有科学家研究过这个现象, 水煮牛肉怎么才能让牛肉很嫩 天花吊灯厂家有哪些 QQ日志看了后再返回时 老是回到第1页 是怎么回事 进QQ空间看日志为什么都要重来一下 手机里的qq动态必须要关机重启以后才能刷新,是怎么回事 qq空间日志里的日志看完返不回去了是怎么回事 打开qq空间日志自动刷新一遍怎么回事 qq日志查看时总要刷新怎么办 看qq日志一直会从头返回一遍 天池是哪三大? 职责分离是内部控制的基本要素吗 网上购物最实惠的网站微信购便宜返利是真的吗还是假的 国家工信局投诉电话 世界杯八强是那些?怎么比赛 北京中元众成国际教育咨询中心怎么样? 深圳恩盛众成国际贸易有限公司怎么样? 世界杯历史上,有没有哪支亚洲球队进入过8强? 为什么日本、韩国、澳大利亚进了世界杯八强? 众成国际微营销系统是什么公司 我该怎么穿衣服?谢谢 多彩贵州城从未来方舟怎么坐公交 从省医到多彩贵州航空有限公司怎么坐公交车 贵阳医科大到多彩贵州城的公交车 从贵阳花香村。到多彩贵州坐几路公交车 贵阳从和尚坡坐几路公交到多彩贵州 《战神5》三女神宝箱怎么开?燃烧峭壁三女神宝箱打开方法_战神三女神宝箱位置 战神5铁门怎么开 中单怎么补6个兵 战神5元素连锁怎么开 为什么吃了中药一个多月没效果呢 帮 吃中药已半年,仍没什么效果怎么回事 我气血两虚吃了两月的中药为什么没效果 我吃了好久中药没效果,停药后好很多了,为什么 呼兰河传算中华传统书籍吗 文献是什么意思啊? 女朋友半夜对我说她想去蹦迪,我该拦着她吗? 女朋友说我要去蹦迪放松一下怎么回复 明日之后五级冲击手雷要多少新币? 明日之后高级伐木专家技能加点推荐明日之后高级伐木专家技能点怎么加