两个交换函数

metaphy metaphy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <iostream>
using namespace std;

void swapp(int &m, int &n) {
int tmp = m;
m = n;
n = tmp;
}

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

int main() {
int m = 0;
int n = 1;
cout << "m = " << m << "; n = " << n << endl;
swapp(m, n);
cout << "m = " << m << "; n = " << n << endl;
swapq(&m, &n);
cout << "m = " << m << "; n = " << n << endl;
}


Both functions work, 但太难理解了。先看第一个swapp. 这个调用的时候,是传变量m,n,函数接收的却是m,n的引用,因此做交换的时候,就是把原main函数里面的m,n的值改掉了,这是传引用的函数调用。

再看第二个,调用的时候直接传变量m,n的地址,函数原型接收m,n的地址,并把它们保存在*p,*q 2个指针变量里面,然后是2个指针变量的交换,比较难理解的是,明明是2个指针交换,为什么回到main函数后,编程m、n交换了?
...全文
评论 6
收藏 已收藏
分享
返回顶部
metaphy
C语言 70,039 成员 243,237 内容