C/C++編程筆記:詳解三種指針(懸空指針、空指針和野指針)

懸空指針
指向已刪除(或釋放)的內(nèi)存位置的指針稱為懸空指針。指針用作懸空指針有三種不同的方式
①內(nèi)存分配:

②函數(shù)調(diào)用:

如果x是靜態(tài)變量,則不會出現(xiàn)問題(或p不會懸空)。

輸出:5
變量超出范圍

無效指針
無效指針是一種特定的指針類型– void * –指向存儲中某個數(shù)據(jù)位置的指針,它沒有任何特定的類型??帐侵割愋??;旧?,它指向的數(shù)據(jù)類型可以是任何類型。如果我們將char數(shù)據(jù)類型的地址分配給void指針,它將成為char指針,如果是int數(shù)據(jù)類型,則將成為int指針,依此類推。任何指針類型都可以轉(zhuǎn)換為空指針,因此可以指向任何值。
(1)void指針不能被取消引用。但是,可以使用類型轉(zhuǎn)換void指針來完成
(2)由于缺少具體的值和大小,因此無法對void指針進行指針?biāo)阈g(shù)運算。
例子:

輸出:
整數(shù)變量為= 4
浮動變量是= 5.500000
空指針
NULL指針是沒有指向任何內(nèi)容的指針。如果沒有將地址分配給指針的情況,則可以簡單地使用NULL。

輸出 :
ptr的值為(null)
注意
(1)NULL與未初始化的指針–未初始化的指針存儲未定義的值??罩羔槾鎯Χx的值,但是環(huán)境定義的值不是任何成員或?qū)ο蟮挠行У刂贰?/p>
(2)NULL vs void 指針–空指針是一個值,而空指針是一個類型
野指針
尚未初始化為任何值(甚至不是NULL)的指針稱為野生指針??梢詫⒅羔槼跏蓟癁橐粋€非NULL垃圾值,該值可能不是有效地址。

每天學(xué)點小知識,希望對你有幫助~
另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
微信公眾號:C語言編程學(xué)習(xí)基地
分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
