C語言 NULL 和 0 區別 - C語言零基礎入門教程


目錄

零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門

一.關於 NULL 定義

NULL 在 stdio.h 中定義如下:

#if !defined(NULL) && defined(__NEEDS_NULL)
#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif

二.NULL 和 0 區別

C 語言中,NULL 和 0 的值都是一樣的,但是為了目的和用途及容易識別的原因,NULL 用於指針和對象,0 用於數值;

#include<stdo.h>
int main()
{
    int *p=NULL;
    printf("%s",p);

}

/*
輸出:
0x00000000
*/

由上面代碼可以看出:NULL 在實際底層調用中就是 0 ;

在不同的系統中,NULL 並非總是和 0 等同,NULL 僅僅代表空值,也就是指向一個不被使用的地址,在大多數系統中,都將 0 作為不被使用的地址,所以就有了類似這樣的定義

#define NULL 0

但並非總是如此,也有些系統不將 0 地址作為 NULL ,而是用其他的地址,所以說,千萬別將 NULL 和 0 等價起來,特別是在一些跨平台的代碼中,這更是將給你帶來災難。

三.猜你喜歡

  1. C 語言 數組下標越界和內存溢出區別
  2. C 語言 使用指針遍歷數組
  3. C 語言 指針和數組區別
  4. C 語言 指針數組和數組指針區別
  5. C 語言 野指針
  6. C 語言 函數值傳遞和址傳遞
  7. C 語言 函數不定長參數
  8. C 語言 函數指針
  9. C 語言 指針函數
  10. C 語言 回調函數 callback
  11. C 語言 #pragma once
  12. C 語言 #include <> 與 #include “” 區別
  13. C 語言 const 修飾函數參數
  14. C 語言 const 和 define 區別
  15. C 語言 #運算符
  16. C 語言 ##運算符
  17. C 語言 __VA_ARGS__
  18. C 語言 ##__VA_ARGS__
  19. C 語言 函數不定長參數 ##__VA_ARGS__經典案例
  20. C 語言 va_start 宏
  21. C 語言 va_end 宏
  22. C 語言 va_arg 宏
  23. C 語言 vprintf 函數
  24. C 語言 va_start / va_end / va_arg 自定義 printf 函數
  25. C 語言 main 函數
  26. C 語言 main 函數參數 main(int argc, char *argv[])
  27. C 語言 exit 函數
  28. C 語言 abort 函數
  29. C 語言 assert 函數
  30. C 語言 NULL 和 0 區別

未經允許不得轉載:猿說編程 » C 語言 NULL 和 0 區別

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM