两个交换函数
#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交换了?
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交换了?
...全文
相关推荐
对两个整数通过函数调用交换其值,然后输出
对两个整数通过函数调用交换其值,然后输出。首先定义一个函数,3个值交换。在主函数函数声明(可省略),调用函数,输入要交换的两个值
函数 可以交换两个整型变量的内容
函数 可以交换两个整型变量的内容
C语言程序设计-编写函数实现两个数据的交换,在主函数中输入任意三个数据,调用函数对这三个数据从大到小排序;.c
C语言程序设计-编写函数实现两个数据的交换,在主函数中输入任意三个数据,调用函数对这三个数据从大到小排序;.c
函数传递变量的值 通过临时变量交换两个变量的值.cpp
小甲鱼视频《C++快速入门》源码
函数传递变量的指针 通过临时变量交换两个变量的值.cpp
小甲鱼视频《C++快速入门》源码


