これは簡単ではありませんが、おそらくばかげていますが、 '\ 0'(または0)に初期化された文字ポインタの内容を印刷しようとしたときに、何の状態が残っているのかを理解する必要があります。 3行目にSTRを印刷しようとする試みは、私はする必要があり、いくつかの動作があります後、コンソールに、上記のコードで' 0'に初期化された文字ポインタを標準出力に送信していますか? (C++)
const char* str;
str = 0; // or str = '\0';
cout << str << endl;
cout << "Welcome" << endl;
ライン4文句を言わない印刷「ようこそ」:次のコードを見てみましょう知っている?私が1行1-3をと置き換えた場合、cout < < '\ 0' < < endl;次の行の "Welcome"というメッセージがコンソールに正常に出力されます。
注:4行目は静かに印刷できません。警告やエラーメッセージなど(少なくともMinGW(g ++)コンパイラは使用していません)。 MS clコンパイラを使用して同じコードをコンパイルしたときに例外が発生しました。
編集:コードはあなたが「\ 0」にSTRを割り当てる場合にのみ、失敗という概念を払拭するために、私は0に割り当てるコードを修正 - あなたはconst char*
値を挿入した場合、以前に
@BoBTFishここの意図はあまりありません。私が尋ねた質問は、それが標準的な出力に違反しているかどうかということです。私がここに持っているものは単なるスニペットです。長い話は、私がライブラリを消費していたことです。特定の関数は初期化された文字列を返すようになっていましたが、そうではありませんでした(明らかにバグです)。だから私の心配は、nullポインタを出力する行為が標準出力を去ったという状態ともっと関係していました。それは私のコードでさえ私が働くことが予想されるものにも影響するからです。 –
あなたのコードは間違っています。あなたはcharとcharへのポインタを混在させました。 – knivil