C語言中的空指標



C語言中的空指標

C 語言中的空指標是指不指向任何記憶體位置的指標。NULL 常量在標頭檔案 stdio.hstddef.h 以及 stdlib.h 中定義。

將指標初始化為 NULL 可以避免程式出現不可預測的行為或防止分段錯誤。

宣告和初始化空指標

以下是宣告和初始化空指標的方法:

type *ptr = NULL;

或者,您也可以使用以下語法:

type *ptr = 0;

空指標示例

以下示例演示瞭如何宣告和初始化空指標:

#include <stdio.h> 

int main() {
   int *p= NULL;//initialize the pointer as null.
   printf("The value of pointer is %u",p);
   return 0;
}

輸出

執行此程式碼時,將產生以下輸出:

The value of pointer is 0.

空指標的應用

以下是空指標的一些應用:

  • 當指標變數尚未分配任何有效記憶體地址時,將其初始化為 指標 變數。
  • 當我們不想傳遞任何有效記憶體地址時,將空指標傳遞給函式引數。
  • 在訪問任何指標變數之前檢查空指標,以便在與指標相關的程式碼中執行錯誤處理。例如,僅當指標不為 NULL 時才解引用指標變數。

空指標始終用於檢測 連結串列 和其他動態資料結構的端點。

檢查指標是否為空

在解引用指標以獲取其目標變數的值之前,始終建議檢查指標是否為空。

示例

請檢視以下示例:

#include <stdio.h> 

int main(){ 

   int *ptr = NULL;   // null pointer

   if (ptr == NULL) { 
      printf("Pointer is a NULL pointer"); 
   } 
   else { 
      printf("Value stored in the address referred by the pointer: %d", *ptr); 
   } 
   
   return 0; 
}

輸出

執行此程式碼時,將產生以下輸出:

Pointer is a NULL pointer

使用空指標檢查記憶體分配

malloc()calloc() 函式用於動態分配記憶體塊。如果成功,這些函式將返回指向已分配塊的指標;如果失敗,則返回 NULL。

示例

以下示例顯示瞭如何使用空指標檢查記憶體分配是否成功:

#include <stdio.h>
#include <stdlib.h>

int main(){

   int* ptr = (int*)malloc(sizeof(int));


   if (ptr == NULL){
      printf("Memory Allocation Failed");
      exit(0);
   }
   else{
      printf("Memory Allocated successfully");
   }

   return 0;
}

輸出

執行程式碼並檢查其輸出:

Memory Allocated successfully

空檔案指標

檢查 檔案指標fopen() 函式 返回的指標是否為 NULL 始終是避免與檔案相關的處理中出現執行時錯誤的推薦方法。

示例

以下示例顯示瞭如何使用空檔案指標來確保檔案是否可訪問:

#include <stdio.h>
#include <string.h>

int main(){

   FILE *fp;
   char *s;
   int i, a;  
   float p;

   fp = fopen ("file3.txt", "r");

   if (fp == NULL){
      puts ("Cannot open file"); return 0;
   }

   while (fscanf(fp, "%d %f %s", &a, &p, s) != EOF)
      printf ("Name: %s Age: %d Percent: %f\n", s, a, p);

   fclose(fp);
   
   return 0;
}

當目標變數尚未分配任何有效記憶體地址時,應始終將指標變數初始化為 NULL。

廣告