为什么两个编译器出现不同的结果
来源: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关键字进行修饰。
如果解决了你的问题,请采纳,祝学习愉快~
相似问题