目錄
零基礎 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 作為不被使用的地址,所以就有了類似這樣的定義
但並非總是如此,也有些系統不將 0 地址作為 NULL ,而是用其他的地址,所以說,千萬別將 NULL 和 0 等價起來,特別是在一些跨平台的代碼中,這更是將給你帶來災難。
三.猜你喜歡
- C 語言 數組下標越界和內存溢出區別
- C 語言 使用指針遍歷數組
- C 語言 指針和數組區別
- C 語言 指針數組和數組指針區別
- C 語言 野指針
- C 語言 函數值傳遞和址傳遞
- C 語言 函數不定長參數
- C 語言 函數指針
- C 語言 指針函數
- C 語言 回調函數 callback
- C 語言 #pragma once
- C 語言 #include <> 與 #include “” 區別
- C 語言 const 修飾函數參數
- C 語言 const 和 define 區別
- C 語言 #運算符
- C 語言 ##運算符
- C 語言 __VA_ARGS__
- C 語言 ##__VA_ARGS__
- C 語言 函數不定長參數 ##__VA_ARGS__經典案例
- C 語言 va_start 宏
- C 語言 va_end 宏
- C 語言 va_arg 宏
- C 語言 vprintf 函數
- C 語言 va_start / va_end / va_arg 自定義 printf 函數
- C 語言 main 函數
- C 語言 main 函數參數 main(int argc, char *argv[])
- C 語言 exit 函數
- C 語言 abort 函數
- C 語言 assert 函數
- C 語言 NULL 和 0 區別
未經允許不得轉載:猿說編程 » C 語言 NULL 和 0 區別
本文由博客 - 猿說編程 猿說編程 發布!