この非常に単純なコード:
#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;
}
2 つの警告が生成されます。文字列リテラルとの比較により、未指定の動作が発生します。
このコードが正確に機能しない理由を説明できますか?
char opt[]
に
char *opt
動作しますが、警告が生成されますか? \0 終了と関係ありますか? opt の 2 つの宣言の違いは何ですか? const 修飾子を使用するとどうなりますか? 解決策は、std::string? を使用することです。