指針是C 語言的特色,使其更靈活。
C語言編程中善用指針可以簡化一些任務(wù)的處理,而對于一些任務(wù)(比如動態(tài)內(nèi)存分配),必須要有指針才行的。也就是說精通C指針編程是很有必要的,幫助你成為一名優(yōu)秀的Cer。
每個變量有其對應(yīng)的內(nèi)存位置,每一個內(nèi)存位置都定義了可使用連字號(&)運(yùn)算符訪問的地址,它表示了在內(nèi)存中的一個地址。
下面是一個輸出定義的變量地址的實(shí)例:
編譯和執(zhí)行,產(chǎn)生下列結(jié)果:
var1 變量的地址:0x7fff5cc109d4var2 變量的地址:0x7fff5cc109de
什么是指針?
寫了上面的代碼之后,再來了解下什么是指針。
實(shí)際上指針也是變量,其中存放了其他變量的地址。就像其他變量或常量一樣,使用之前要先聲明。指針聲明形式:
type *var-name;
type是指針的基類型,必須為有效的C語言數(shù)據(jù)類型,var-name是指針變量名。"*"用來聲明這是指針變量。以下都是有效的指針聲明形式:
int *ip; /* 一個整型的指針 */
double *dp; /* 一個 double 型的指針 */
float *fp; /* 一個浮點(diǎn)型的指針 */
char *ch; /* 一個字符型的指針 */
指針?biāo)赶虻淖兞炕虺A康臄?shù)據(jù)類型不同,但是,所有指針的值都是一個代表內(nèi)存地址的十六進(jìn)制數(shù)。
指針的使用
使用指針的基本操作:
定義一個指針變量
把變量地址賦值給指針
訪問指針變量中可用地址的值
這些是通過使用一元運(yùn)算符“*”來返回位于操作數(shù)所指定地址的變量的值。
下面是指針應(yīng)用的實(shí)例:
當(dāng)代碼被編譯、執(zhí)行,產(chǎn)生結(jié)果如下:
Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable:20
C語言中的NULL指針
在變量聲明的時候,如果沒有確切的地址可以賦值,為指針變量賦一個 NULL 值是一個良好的編程習(xí)慣。賦為 NULL 值的指針被稱為空指針。
NULL 指針是一個定義在標(biāo)準(zhǔn)庫中的值為零的常量。請看下面的程序:
當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
ptr 的地址是0x0
在大多數(shù)的操作系統(tǒng)上,程序不允許訪問地址為 0 的內(nèi)存,因?yàn)樵搩?nèi)存是操作系統(tǒng)保留的。然而,內(nèi)存地址 0 有特別重要的意義,它表明該指針不指向一個可訪問的內(nèi)存位置。但按照慣例,如果指針包含空值(零值),則假定它不指向任何東西。
如需檢查一個空指針,您可以使用 if 語句,如下所示:
if(ptr) /* 如果 p 非空,則完成 */
if(!ptr) /* 如果 p 為空,則完成 */
-
C語言
+關(guān)注
關(guān)注
180文章
7581瀏覽量
135543 -
指針
+關(guān)注
關(guān)注
1文章
475瀏覽量
70477
原文標(biāo)題:C語言的指針
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論