敲黑板划重点
用函数实现两个数字内容的交换,你可能会这样做:
void change_num(int a, int b) {
int tmp = a;
a = b;
b = tmp;
}
感觉太简单了阿,然后调用函数,大功告成
结果发现,,,emmm,不对啊 内容没有交换,瓦特???
这时再次仔细检查分析代码
其实 a b 两个形参只能算是实参的副本
交换了数值,仅仅是把副本的数值进行了交换,而本体却没有发生变化
因此该种方法行不通
此时利用另一种方法,利用指针变量
void change_num(int* a, int* b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
传入两个参数分别为两个数的地址,通过地址访问地址内容,即实参值,将地址内容进行交换,这才能实现利用函数来交换两个值的内容,然后就可以肆意的调用啦,哈哈!