1. 程式人生 > 其它 >C語言 空指標 NULL - C語言零基礎入門教程

C語言 空指標 NULL - C語言零基礎入門教程

目錄

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

一.指標簡介

在前面的文章有關於指標的介紹:指標很靈活,它可以指向任意型別的資料。指標的型別說明了它所指向地址空間的記憶體,以下是有效的指標宣告:

int    *p;    /* 一個整型的指標 */
double *p;    /* 一個 double 型的指標 */
float  *p;    /* 一個浮點型的指標 */
char   *p;    /* 一個字元型的指標 */

注意:不要忘記在指標型別和變數名中間還有一個 * 號,沒有這個 * 號,只是定義了一個普通變數,這也是普通變數宣告和指標宣告的區別之一;

二.空指標 NULL

C 語言中,如果一個指標不指向任何資料,我們就稱之為 空指標 ,用 NULL 表示。例如:

int *p = NULL;

注意區分大小寫,null 沒有任何特殊含義,只是一個普通的識別符號。NULL 是一個巨集定義,在 stdio.h 被定義為:

#define NULL ((void *)0)

我們知道,變數一旦定義就要分配記憶體,指標變數也是如此。例如:

int *p;  //它不是空指標

它的值是隨機的,是垃圾值,如果不小心使用了它,執行時一般會引起段錯誤,導致程式退出,甚至會不知不覺地修改資料。

p 經過定義,就一定在記憶體中分配了 4 個位元組的空間,只是它的值是隨機的,不像 int 會被初始化為 0,但是它確實指向了一段正常使用的記憶體。使用 p 時,操作的就是這段記憶體的資料,幸運的話能夠正常執行,不過大部分情況下這段記憶體是無權操作的。

三.關於 NULL 和 0

不要把 NULL 和 0 等同起來,下面的寫法也是不專業的

int *p = 0;

正確的書寫:

int *p = NULL;

注意 NULL 和 NUL 的區別:NULL表示空指標,是一個巨集定義,可以在程式碼中直接使用。而 NUL 表示字元 ‘\0’,也就是字串結束標誌,它是 ASCII 碼錶中的第 0 個字元。NUL 沒有在 C 語言中定義,僅僅是對 ‘\0’ 的稱呼,不能在程式碼中直接使用。

四.猜你喜歡

  1. C 語言邏輯運算子
  2. C 語言三目運算子
  3. C 語言逗號表示式
  4. C 語言 sizeof 和 strlen 函式區別
  5. C 語言 strcpy 和 strcpy_s 函式區別
  6. C 語言 memcpy 和 memcpy_s 區別
  7. C 語言 陣列定義和使用
  8. C 語言 陣列遍歷
  9. C 語言 陣列下標越界
  10. C 語言 陣列記憶體溢位
  11. C 語言 陣列下標越界和記憶體溢位區別
  12. C 語言 二維陣列定義和使用
  13. C 語言 二維陣列行數和列數計算
  14. C 語言 指標宣告和定義
  15. C 語言 指標 p++ / p–
  16. C 語言 p++/§++/_(p++)/_p++
  17. C 語言 使用指標遍歷陣列
  18. C 語言 指標和陣列區別
  19. C 語言 陣列指標
  20. C 語言 指標陣列
  21. C 語言 指標陣列和陣列指標區別
  22. C 語言 空指標 NULL

未經允許不得轉載:猿說程式設計 » C 語言 空指標 NULL

本文由部落格 - 猿說程式設計 猿說程式設計 釋出!