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