2 weixin 40233500 weixin_40233500 于 2017.09.14 00:08 提问

C++入门 实在想不通 没在论坛找到求大佬帮忙

补充swap的形参
#include
using namespace std;

void swap(
// 在此处补充你的代码
)
{
int * tmp = a;
a = b;
b = tmp;
}
int main()
{
int a = 3,b = 5;
int * pa = & a;
int * pb = & b;
swap(pa,pb);
cout << pa << "," << * pb;
return 0;
}
***

3个回答

caozhy
caozhy   Ds   Rxr 2017.09.14 08:32

void swap(int** a, int**b
// 在此处补充你的代码
)

TA_tan
TA_tan   2017.09.14 08:45

#include
using namespace std;

void swap(int *a,int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
int a = 3,b = 5;
int * pa = & a;
int * pb = & b;
swap(pa,pb);
cout << "a:"<<a << "," << "b:"<<b;
return 0;
}
输出:
a:5,b:3

楼主是想通过函数交换a和b的值吗?
首先,你应该知道的是传入函数中的是一个副本。也就是说我们为了改变a本身,传入了a指针的副本,通过指针找到a存在的地方,真正的改变a的数值。

或许下面这个简单的例子更好理解一些。

#include
using namespace std;

void setValue(int a)
{
a = 10;
}

void setValuebyPoint(int *a)
{
*a = 9;
}

int main()
{
int a = 8;
cout<<a<<endl;
setValue(a);
cout<<"setValue:"<<a<<endl;
setValuebyPoint(&a);
cout<<"setValuebyPoint:"<<a<<endl;
}
输出:8
setValue:8
setValuebyPoint:9

lei973103605
lei973103605 兄弟,人家 让你写形参,并不是要你改变函数体!
10 个月之前 回复
lei973103605
lei973103605   2017.09.14 09:45

这道题主要是考察C++中的 引用这个知识点的应用。
正确答案应该是:
void swap(int &a, int &b)// 在此处补充你的代码
{
int * tmp = a;
a = b;
b = tmp;
}

TA_tan
TA_tan 如果考察引用的话,在main里面就不应该传入指针啊!!!还有swap函数中,int *tmp 是指针类型,a还是个int类型,怎么可以赋值?
10 个月之前 回复
TA_tan
TA_tan 兄弟,楼主可能自己都不知道考什么知识点。
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
配置hbm.xml 报错
今天在配置 hibernate的hbm.xml文件时,它老是报错,我以为是类型不匹配,找啦无数次 ,都没找到错误,唉,   悲剧!!!!   后来终于发现了 原来是单词拼写错误:
求大佬帮忙
匿名上位机写了校验码程序,但为什么每次写入飞控时显示校验码超时
JAVA编译报错-No enclosing instance of type Test is accessible
java编译出错: No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing instance of type Test (e.g. x.new A() where x is an instance of Test). 代码demo public clas
逆向基础:软件手动脱壳技术入门
http://netsecurity.51cto.com/art/201509/490855_all.htm#topx
中国最牛的5位【IT界大佬】30岁在干嘛?
马云:1994年,马云正经营海博翻译社。为生存下去,马云背着大麻袋到义乌、广州进货,目的就是赚钱给员工发工资。后来,马云开始寻找机会决定创业,慢慢的,就有了后来的中国黄页、淘宝网、支付宝、天猫,以及阿里帝国。       雷军:30岁当上总经理天天泡bbs 雷军前半生比前三位都顺,武汉大学超级学霸,在学校就是IT大神了,毕业直接进入金山软件,不久当上总经理。但雷布斯太顺了,30岁还有点“不务正业”,
鱼c小甲鱼零基础学python全套课后题
鱼c小甲鱼零基础学python全套课后题
《SQL入门经典》学习笔记
第一部分  SQL概念综述 第1章  欢迎来到SQL世界 1.4.1 表命名标准 表的名称以_TBL作为后缀,表的索引以_INX为后缀 1.4.3 表的构成 字段是表里的一列,记录是表里的一行 第二部分  建立数据库 第2章  定义数据结构 2.2.1 定长字符串 CHARACTER(n): n为最大字符数,通常用空格来填充数量不足的字符 2.2.2 变长字符串
对网文“美国人至今也想不通”有感
  乱世出英雄,不过我对这种战争的事情不感冒。我只知道那些死了的家人没人照顾,那些逃兵却是今天一个一个高高在上的坐着赏受,甚至剥削人民。  我们能战胜说成是一个民族觉醒的力量那只是那些军官们自谦,知道上下一心,其力断金,鼓动人民勇敢抗敌搞出的口号而已,今天再叫这个就显得有点不伦不类了。  他们的军事政治天份带来了新中国,我们确实也同时为之感到骄傲和自豪。但是,千万不要只知道口里面叫“中国人
求大佬帮忙解决一下问题
ajax请求的时候报这个get错误
一段简单的代码,求大佬帮忙解答!!!
#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;math.h&amp;gt;int main(){ int sign=1; double Sum=0.0,e=1.0, i=1.0; while(fabs(e)&amp;gt;=1e-6) { Sum=Sum+e; sign=-sign; i+=2; e=sign/i; } Sum=Sum*4; printf(&quot;%lf\n&quot;,Sum); re...