同様に、私は2つのポインタNULLを宣言します。そして、私がそれらを比較すると、結果は真です。しかし、NULLを「無」とみなすと、2つの「ノー」が等しいとはどういうことができますか?何か特別な理由がありますか?どんな助けもありがたい。 :)CのNullポインタがCの別のNullポインタと等しいのはなぜですか?
0
A
答えて
2
ポインタをNULLにポイントすると、メモリアドレス0x0
を指していることを意味します。
#include <stdio.h>
int main()
{
char *p = NULL;
..
..
は、* pは
NULL
を指しています。我々は
gdb
にチェックした場合、我々は
(gdb) p p
$1 = 0x0
0x0
0x0
メモリアドレスにアクセスすることはできません
NULL
値、すなわち、0のアドレスで、次しまいます。
(gdb) p *p
Cannot access memory at address 0x0
あなたはメモリアドレス0x0
にアクセスしようとすると、プログラムはあなたがNULL
すなわちメモリアドレス0x0
を指している2つのポインタを比較した場合、それが唯一のと同じになります今segmentation fault
を言って墜落しますNULL
の値はデフォルトで0
です
6
Cでは、任意の型の2つのヌルポインタが等しいと比較されることが保証されています。 NULL
は、実装定義のヌルポインタ定数としてと定義されています。C99
は、暗黙的または明示的にタイプvoid *
に変換された整数値0として移植可能に表現できます。
関連する問題
- 1. C++のNULLポインタ
- 2. ポインタがnullになるC++
- 3. NULLポインタの逆参照もNULLと等しいですか?
- 4. NULLポインタの削除C++
- 5. CでNULLへのポインタへのポインタを初期化して宣言できないのはなぜですか?
- 6. なぜNULLポインタが機能しないのですか?
- 7. C++でtinyXML2でNULLポインタを取得するのはなぜですか?
- 8. CからJavaへのポインタを渡すとNULLになる
- 9. C++マクロによるNULLポインタの発生
- 10. なぜuchar *マットへのポインタがnullになるのですか?
- 11. C++可能なnullポインタ逆参照
- 12. CでNULLポインタをチェックする
- 13. C++のゼロ(NULL)ポインタはfalseを返すはずですか?
- 14. Cの構造体ポインタにNULLをキャストしていますか?
- 15. のNullポインタ
- 16. のNullポインタ
- 17. JavaのNULLポインタ
- 18. NULLポインタのEditText
- 19. ポインタがnullの場合、共有メモリの内容をnullにします。C++
- 20. C - ポインタがNULLかどうかをチェックする際のセグメンテーションエラー
- 21. セグメンテーションフォールトとポインタがNULLでない
- 22. nullポインタ例外が存在しないのはなぜですか?
- 23. CポインタをNULLに代入する
- 24. argv [argc]がNULLに等しいかどうかポインタ
- 25. C++ gmock - SaveArgにnullポインタを渡すと何が起こるか
- 26. HibernateはNULLポインタ
- 27. null canvas.drawPath()へのポインタ
- 28. nullポインタの例外
- 29. ポインタNULLの問題
- 30. PreferenceManager.getDefaultSharedPreferences(getBaseContext())のnullポインタ。
_the_ヌルポインタしかないためです。 – byxor
2つのintを '5'と宣言します。私がそれらを比較すれば、彼らは平等です。ポインタにも同じ考えが適用されます。 – byxor
"なぜ"の質問は答えが難しいです。 「標準がそう言っているから」という答えは不満であり、「なぜ標準がそれを言っているのか」という質問はありません。すべての基準作成者の性格と目標の精神分析と、基準が作成されるプロセスの理解が必要です。 –