这个非常简单的代码:
#include <iostream>
using namespace std;
void exec(char* option)
{
cout << "option is " << option << endl;
if (option == "foo")
cout << "option foo";
else if (option == "bar")
cout << "opzion bar";
else
cout << "???";
cout << endl;
}
int main()
{
char opt[] = "foo";
exec(opt);
return 0;
}
生成两个警告:与字符串文字比较会导致未指定的行为。
你能解释一下为什么这段代码不起作用,但是如果我改变
char opt[]
到
char *opt
它有效,但会产生警告?它与 \0 终止有关吗?opt的两个声明有什么区别?如果我使用 const 限定符怎么办?解决方案是使用 std::string?