We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
( close となった issue の reopen はできなかったので、つづきを別 issue としています。) #3 (comment) より:
...昔のC言語では0はnullポインターの値だと規格上定められてはいなかった。
「規格」としておそらく最古の C89 時点でも 0 はヌルポインタ定数とされています。 http://port70.net/~nsz/c/c89/c89-draft.html#3.2.2.3
0
An integral constant expression with the value 0, or such an expression cast to type void * , is called a null pointer constant. ...
同様の規定が C99, C11 のドラフトでも確認できます。 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
ということで以下の点を改めて見直しおねがいします。
c250d15#diff-d27600081f0d6802e8fd7ede213346bfR230 C++ではさらに歴史的な理由で、0もnullポインター値として扱う。 ポインタの文脈で 0 をnullポインター値として扱う(ヌルポインタ定数と する)のはC言語も同じなので、「C++では」として直前の NULL の紹介と 分けられているのは不適切だと思います。
c250d15#diff-d27600081f0d6802e8fd7ede213346bfR230
C++ではさらに歴史的な理由で、0もnullポインター値として扱う。
ポインタの文脈で 0 をnullポインター値として扱う(ヌルポインタ定数と する)のはC言語も同じなので、「C++では」として直前の NULL の紹介と 分けられているのは不適切だと思います。
NULL
修正 50afb5a 後の文面について。
...わからない値を持ったポインターの参照先への読み書きは未定義の挙動を引き起こす。
実際は参照先への読み書き以前に(直前の int の例と同様に)未初期化変数の 値を読んだ時点で未定義動作となります。参照先の読み書きを行わない std::cout << pointer でも未定義動作ということです。 後続の「なぜ未定義の挙動になるかというと~」も含めて、この記述だと 「読み書きさえしなければ未定義動作とならない」と読まれる可能性があり、 適切ではないと思います。
std::cout << pointer
The text was updated successfully, but these errors were encountered:
No branches or pull requests
( close となった issue の reopen はできなかったので、つづきを別 issue としています。)
#3 (comment) より:
「規格」としておそらく最古の C89 時点でも
0
はヌルポインタ定数とされています。http://port70.net/~nsz/c/c89/c89-draft.html#3.2.2.3
同様の規定が C99, C11 のドラフトでも確認できます。
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
ということで以下の点を改めて見直しおねがいします。
修正 50afb5a 後の文面について。
実際は参照先への読み書き以前に(直前の int の例と同様に)未初期化変数の
値を読んだ時点で未定義動作となります。参照先の読み書きを行わない
std::cout << pointer
でも未定義動作ということです。後続の「なぜ未定義の挙動になるかというと~」も含めて、この記述だと
「読み書きさえしなければ未定義動作とならない」と読まれる可能性があり、
適切ではないと思います。
The text was updated successfully, but these errors were encountered: