C語言中空指標的理解

2021-10-10 09:26:20 字數 417 閱讀 2499

空指標實質上是有指向的指標,但它指向的位址是很小的位址

它在標頭檔案stdio.h中,這樣定義的#define null ((void *)0)

顯然,這是乙個巨集定義。null 實際上是((void*)0) ,容易看出,外層的括號純粹是為了防止歧義;裡層的括號則是強制型別轉換,轉換成void * 型別,本來void * 型別是用來存放位址的,那麼這裡的0自然就是位址0了。

在記憶體分配方面,較小的位址是不用來存放資料的,也不允許程式訪問的。所以,指標指向了它,就是這個指標不能操作它指向的這塊較小的位址。

簡單來說,空指標有指向,但是它指向的位址是特殊的,該位址不允許存放資料和不允許程式訪問,所以空指標不能操作該位址裡的東西,我們就理解為「指標指向了空,無法操作了」。

C語言中陣列指標的理解

留個標記,以防自己忘掉 在 c陷阱與缺陷 這本書中說道 c語言中的陣列值得注意的地方有以下兩點 1.c語言中只有一維陣列,而且陣列的大小必須在編譯期就作為乙個常數確定下來。然而,c語言中陣列的元素可以是任何型別的物件,當然也可以是另外乙個陣列。這樣,要 出來乙個多維陣列就不是一件難事。2.對於乙個陣...

個人c語言中指標的理解

定義指標 int p int i p i p是指向i位址的指標 p 10 指的是i的值變成了10指標在使用前一定要賦值 確定指標指向 為指標變數賦的值必須是乙個位址 將指標變數初始化為空指標,意為該變數不指向任何值 int ptr null 將變數位址賦值給指標 int a int p a 或者 i...

C 語言中的指標

指標是 c 語言中的精華,正確靈活的運用指標,可以表示複雜的資料結構,動態分配記憶體,方便使用字串和陣列,呼叫函式返回多結果,直接處理記憶體單元等等。位址就是記憶體的編號,如果拿旅店作為記憶體,那麼每個房間號其實就相當於位址了。當程式編譯時,就會對變數分配記憶體單元,分配時按變數型別分配大小。經過編...