関数の奇妙な動作を理解してstrcmp
います。これは、次のコードで示されます。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char *p = "no";
cout << p << endl; //Output: no
cout << &p << endl; //Output: 0x28ac64
cout << strlen(p) << endl; //Output: 2
cout << strcmp(p, "no") << endl; //Output: 0
cin >> p; //Input: bo
cout << p << endl; //Output: bo
cout << &p << endl; //Output: 0x28ac64
cout << strlen(p) << endl; //Output: 2
cout << strcmp(p, "no") << endl; //Output: 0
return 0;
}
私が理解できないのは、行 15 の出力が 0 である理由です。0 は 2 つの文字列が等しいことを意味しますが、明らかにそうではありません。ここで何が欠けていますか?
PSヘッダーにエスケープ文字が含まれていることをお詫びしますが、削除するとiostreamを表示できませんでした。これを投稿していますが、次回は正しくする方法を見つけます。:)