为什么两个编译器出现不同的结果
来源:3-2 引用实现字符串的交换
MasonM
2018-05-15 12:32:06

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

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

第二个贴图代码中都没有使用const,参数传递正确,实现交换,给的警告是因为char类型定义的字符串严格来讲应该使用const修饰,虽然不影响代码实现结果,建议还是都使用const关键字进行修饰。
如果解决了你的问题,请采纳,祝学习愉快~
相似问题