像考慮我聲明兩個指針NULL。然後,如果我比較它們,結果是真實的。但是如果我們認爲NULL是「無」,那麼我們怎麼能說兩個「nothings」是平等的?那是出於某些特定的原因嗎?任何幫助讚賞。 :)爲什麼C中的空指針等於C中的另一個空指針?
0
A
回答
2
當您將指針指向NULL時,這意味着它指向的內存地址爲0x0
。
考慮下面的例子中,
#include <stdio.h>
int main()
{
char *p = NULL;
..
..
這裏,* P指向NULL
。如果我們在gdb
校驗,那麼我們將得到以下,
(gdb) p p
$1 = 0x0
0x0
是NULL
值即0的地址,則無法訪問0x0
內存地址。
(gdb) p *p
Cannot access memory at address 0x0
如果您嘗試訪問說segmentation fault
現在,如果你比較它們指向的內存地址0x0
即NULL
然後兩個指針的內存地址0x0
然後程序會崩潰這將是相同的只是作爲NULL
默認值爲0
6
在C中,任何類型的兩個空指針保證比較相等。宏NULL
被定義爲實現定義的空指針常量,其在C99
中可以可移植地表示爲隱式地或顯式地轉換爲類型void *
的整數值0。
相關問題
- 1. 指針值C空指針
- 2. C++ - 空指針
- 3. 在C和C++中,const指針指針指的是什麼?
- 4. 傳遞指向C++中另一個指針的'const'指針
- 5. C函數指針鑄造空指針
- 6. C++什麼是空指針值?
- 7. 在函數中引用另一個指針的C指針
- 8. 在C++中爲指針指定指針
- 9. 爲什麼我的C++向量在不遵守指針時使用空指針。
- 10. 「這個」指針變爲空C++
- 11. 指向C中的指針的指針
- 12. 指向指針的指針與C中指針的地址有什麼區別?
- 13. C中的這個指針是什麼?
- 14. 使用另一個指針指向地址的指針C
- 15. 無法理解c中的空指針
- 16. 在C#中的空指針異常
- 17. 解引用C++中的空指針
- 18. 指向另一個指針的指針 - 會發生什麼?
- 19. C++宏導致空指針
- 20. Visual C++/CLI(CLR)空指針
- 21. 空指針無效 - C++ - VS2010
- 22. C空指針比較
- 23. C++:空指針和結構
- 24. 空指針無效 - C++
- 25. C++設置空指針?
- 26. C++中的指針分配。 (指針的指針到指針位於LHS)
- 27. C - 爲什麼指針指針與指向數組的指針不同?
- 28. C++:另一個'檢查指針是否爲空'
- 29. 爲什麼在C中使用指針?
- 30. C中的空函數指針是什麼意思?
因爲只有_the_空指針。 – byxor
考慮我聲明兩個整數是'5'。如果我比較他們,他們是平等的。同樣的想法適用於指針。 – byxor
「爲什麼」的問題很難在SO上回答。答案是「因爲標準是這樣說的」並不令人滿意,「標準爲什麼這麼說?」這個問題。需要對所有標準作者的個性和目標進行精神分析,並瞭解標準制定過程。 –