5.1 指針和指針變量
指針是程序設計語言的一個重要概念。指針在C程序中有以下多方面的作用:
(1)利用指針能間接引用它所指的對象。
?。?)利用各種類型的指針形式參數,能使函數增加描述能力。
?。?)指針與數組結合,使引用數組元素的形式更加多樣、訪問數組元素的手段更加靈活。
?。?)指針能用來描述數據和數據之間的關系,以便構造復雜的數據結構。當一個數據A要關聯另一個數據B時,在數據A中增加一個指向數據B的指針就可實現數據A關聯數據B.結合系統提供的動態分配存儲設施,又能構造出各種動態數據結構。
1.指針的基本概念
為了區別內存的不同位置,內存被分成字節,內存的全部字節順序地賦予一個稱為地址的編號。程序中的變量將在內存中占據一定的內存字節,在這些字節中存儲的數據信息稱為變量的內容。一個變量占用連續的若干個內存字節時,最前面的一個字節的地址就作為該變量的地址。指針就是內存地址,是變量的地址,或函數的入口地址。變量的地址在程序執行時,起著非常重要的作用。當計算機在計算含有變量的表達式時,計算機按變量的地址取出其內容,并按變量的地址將計算結果存入到變量占據的內存中。如代碼:
int x=l;
x=x+2;
其中語句“x=x+2;”中的第一個x涉及到變量x占據的內存,第二個 x是引用變量 x的內容。該語句的意義是“取X的內容,完成加上2的計算,并將計算結果存入變量X占據的內存中?!?/span>
2.指針變量和它所指向的變量
在C語言中,地址也作為一種值,能被存儲、比較、賦值,并稱地址數據為指針類型,而稱存儲地址值的變量為指針變量,簡稱指針。C程序可用運算符&取變量的地址,如表達式&x
的值就是變量X的地址。程序除能按名引用變量外,也可利用變量的地址引用變量。按變量名引用變量稱為直接引用,而將變量A的地址存于另一變量B中,借助于變量B引用變量A稱為對A的間接引用。
3.指針變安的定義、初始化和引用
指針變量用于存放某個變量的地址。定義指針變量的一般形式為:
類型 * 指針變量名;
或
類型 * 指針變量名=初值表達式;
其中,指針變量名是標識符,指針變量名之前的符號“*”,表示該變量是指針類型的。而最前面的“類型”,表示該指針變量能指向變量或函數的類型。初值表達式是一個地址表達式,如表達式中有某變量的地址表達式,則這個變量應是前面已定義的。
在C語言中,當定義局部指針變量時,如未給它指定初值,則其值是不確定的。程序在使用它們時,應首先給它們賦值。誤用其值不確定的指針變量間接引用其它變量,會引起意想不到的錯誤。為明確表示指針變量不指向任何變量,在C語言中用0值表示這種情況,記為NULL.如
ip= NULL;
也稱指針值為0的指針變量為空指針。對于靜態的指針變量,如在定義時未給它指定初值,系統自動給它指定初值0.
指針變量取程序對象的(開始)地址值,不能將一個整型量或任何其它非地址值賦給一個指針變量。另外,指針變量對所指向的對象也有類型限制,不能將一個不能指向的對象的地址賦給指針變量。如有以下定義:
int i=100,j,*ip,*intpt;
float f,*fp;
以下代碼如注釋所敘。
iP=&i;/*使ip指向i*/
intpt=ip;/*使intpt指向ip所指變量*/
fp= &f;/*使fp指向正*/
ip=NULL;/*使 ip不再指向任何變量*/
5.2 指針變量的應用
1.指向變目的指針變量
當指針變量指向某個對象(它的值不是NULL)時,可以用
* 指針變量
引用指針變量所指向的對象。如語句:
ip=&i;
j=* ip;
聲明:
(一)由于考試政策等各方面情況的不斷調整與變化,本網站所提供的考試信息僅供參考,請以權威部門公布的正式信息為準。
(二)本網站在文章內容來源出處標注為其他平臺的稿件均為轉載稿,免費轉載出于非商業性學習目的,版權歸原作者所有。如您對內容、版權等問題存在異議請與本站聯系,我們會及時進行處理解決。
相關推薦
2022年浙江自考英語(二)語法及翻譯復習資料(8)
10-092023年4月浙江自考英語(二)串講筆記:lesson10-13
02-102022年浙江自考《高級英語》復習資料(13)
09-282023年4月浙江自考美學模擬題及答案匯總
12-012023年浙江自考公共管理學串講資料:公共管理學的產生
03-022023年4月浙江自考環境心理學復習重點三
11-182022年浙江自考俄羅斯小說文體論復習資料第五章
10-082023年10月浙江自考傳播學概論復習資料:傳播效果的類型
08-302023年4月浙江自考高級英語課文翻譯復習資料十二
11-262023年4月浙江自考旅游心理學復習筆記:領導風格的確立
12-13