为什么两个编译器出现不同的结果

来源:3-2 引用实现字符串的交换

MasonM

2018-05-15 12:32:06

http://img.mukewang.com/climg/5afa61710001852a08420574.jpg

老师我用VS2017去编译,但结果为什么不是两个字符串交换呢?

http://img.mukewang.com/climg/5afa61be0001a95009500649.jpg

但我用Dev C++去编译就可以实现两个字符串交换,但下面会出现橙色字的东西(红色框框的东西),这是为什么呢?

#include<iostream>
using namespace std;
void exchange(char*&r1, char*&r2)
{
 char*p;
 p = r1;
 r1 = r2;
 r2 = p;
}
int main()
{
    const char* s1 = "hello";
    const char* s2 = "world";
 exchange(s1, s2);
 cout << s1 << endl;
 cout << s2 << endl;
 system("pause");
 return 0;
}
代码在这里,请老师解答一下,谢谢老师!


写回答

1回答

imooc_澈

2018-05-15

你好,你的第一个贴图结果出错的原因是变量不一致,main函数中定义的时候使用了const,而exchange函数的参数以及函数里面的*p没有const关键字修饰,修改如下:

http://img.mukewang.com/climg/5afa82b0000118b803820146.jpg

第二个贴图代码中都没有使用const,参数传递正确,实现交换,给的警告是因为char类型定义的字符串严格来讲应该使用const修饰,虽然不影响代码实现结果,建议还是都使用const关键字进行修饰。

如果解决了你的问题,请采纳,祝学习愉快~

0

0 学习 · 593 问题

查看课程