使用指针形参交换两个整数的值
来源:互联网 发布:金税盘重装后数据没了 编辑:程序博客网 时间:2024/05/16 11:56
楼主是个小白,C++Primer看到第六章,做练习的时候遇到了点小问题,解决了以后到这里来跟大家分享一下。
题目是要求使用指正形参交换两个整数的值。
我心想,这还不简单,恩,开始动手了。
#include<iostream>#include<cstdlib>using namespace std;void exchange(int *p, int *q){ int *k =0; k = p; p = q; q = k;}int main(){ int n = 0, i = 42; int *p = &n; int *q = &i; exchange(p, q); cout << *p << endl << *q<<endl; return 0;}
运行以后发现值并没有被交换。。。。。
反复看书,看到书上有一段这样的解释:函数对所有形参的操作都不会影响实参。换句话说,上面的代码中的p,q的值都没有被改变。
为了验证这种说法,我在主函数中去掉了调用,把exchange中的内容放到了主函数中。
#include<iostream>#include<cstdlib>using namespace std;int main(){ int n = 0, i = 42; int *p = &n; int *q = &i; int *k = 0; k = p; p = q; q = k; cout << *p << endl << *q<<endl; return 0;}
运行之后发现值完成了交换,说明正是因为书上提到的原因,函数对形参的操作不会影响实参。
在调用时使用对指针的引用传递,就可以实现题目中的要求。
#include<iostream>#include<cstdlib>using namespace std;void exchange(int **p, int **q){ int *k = *p; *p = *q; *q = k;}int main(){ int n = 0, i = 42; int *p = &n; int *q = &i; exchange(&p, &q); cout << *p << endl << *q<<endl; return 0;}
这样就大功告成啦:逃)
0 0
- 使用指针形参交换两个整数的值
- 交换两个整数的值
- 交换两个整数的值
- 交换两个整数的值
- 使用指针交换两个整形变量的值
- 067.Pointer 使用指针交换两个变量的值
- 067.Pointer 使用指针交换两个变量的值
- 使用C语言指针交换两个变量的值
- 交换两个整数的值 Java_Note
- C语言交换两个整数的值
- 两个整数变量的交换
- 两个整数的交换方法
- 指针之交换两个变量的值
- 不使用第三个变量完成两个整数的交换
- 不使用第三个变量完成两个整数的交换
- 不使用中间变量实现两个整数的交换
- c_指针_通过指针交换两个变量的值且不使用新变量
- 不使用临时变量交换两个整数
- Android Studio上使用 ButterKnife Zelezny
- 关于vs2013 安装后出现"Cannot find one of more components. Please reinstall the application"处理方法
- NodeJS调试 -- node-inspector
- 【JUC】JDK1.8源码分析之SynchronousQueue(九)
- iOS狂暴之路---iOS中应用的数据存储方式解析
- 使用指针形参交换两个整数的值
- 数据结构:栈的链式存储结构
- 数据结构实验之串三:KMP应用
- Android 延时器的使用
- DDL、DML、DCL、TCL四种SQL语言对比
- 递推: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数
- usaco 2012 Open【Running Laps奶牛赛跑】
- MPAndroidChart 教程:动画 Animations(十)
- 浅谈Base64编码