指標是
c語言的精華部分,通過利用
指標,我們能很好地利用記憶體資源,使其發揮最大的效率。有了
指標技術,我們可以描述複雜的
資料結構,對字串的處理可以更靈活,對陣列的處理更方便,使程式的書寫簡潔,高效,清爽。但由於
指針對初學者來說,難於理解和掌
握,需要一定的計算機硬體的知識做基礎,這就需要多做多練,多上機動手,才能在實踐中盡快掌握,成為c的高手。
過去,我們在程式設計中定義或說明變數,編譯系統就為已定義的變數分配相應的記憶體單元,也就是說,每個變數在記憶體會有固定的位置,有具體的位址。由於變數的資料型別不同,它所佔的記憶體單元數也不相同。若我們在程式中做定義為:
int a=1,b=2;
float x=3.4, y = 4 . 5 ;
double m=3.124;
char ch1='a', ch2='b';
讓我們先看一下編譯系統是怎樣為變數分配記憶體的。變數a,b是整型變數,在記憶體各佔2個位元組;x,y是實型,各佔4個位元組;m是雙精度實型,佔8個位元組;ch1,ch2是字元型,各佔1個位元組。由於計算機記憶體是按位元組編址的,設變數的存放從記憶體2000單元開始存放,則編譯系統對變數在記憶體的安放情況為圖6-1所示。
變數在記憶體中按照資料型別的不同,佔記憶體的大小也不同,都有具體的記憶體單元位址,如變數a在記憶體的位址是2000,佔據兩個位元組後,
變數b的記憶體位址就為2002,變數m的記憶體位址為2012等。對記憶體中變數的訪問,過去用scanf("%d%d%f",&a,&b,&x)表示將資料輸入變數的位址所指示的記憶體單元。那麼,訪問變數,首先應找到其在記憶體的位址,或者說,乙個位址唯一指向乙個記憶體變數,我們稱這個位址為
變數的指標。如果將變數的位址儲存在記憶體的特定區域,用變數來存放這些位址,這樣的變數就是
指標變數,通過
指針對所指向變數的訪問,也就是一種對變數的「間接訪問」。
設一組指標變數pa、pb、px、py、pm、pch1、pch2,分別指向上述的變數a、b、x、y、m、ch1、ch2,
指標變數也同樣被存放在記憶體,二者的關係如圖6-2所示:
在圖6-2中,左部所示的記憶體存放了
指標變數的值,該值給出的是所指變數的位址,通過該位址,就可以對右部描述的變數進行訪問。如
指標變數pa的值為2000,是變數a在記憶體的位址。因此,pa就指向變數a。變數的位址就是
指標,存放
指標的變數就是
指標變數。
指標和指標變數
指標 乙個變數的位址稱為該變數的指標。指標變數 專門用來存放另一變數的位址 指標 的變數。用來指向另一變數。指標變數的值 指標變數中存放的值 指標 位址 定義乙個指標變數 如下 int i float p p是指向實型變數的指標變數,指標變數名是p,p為指標變數p所指向的儲存單元 p i i為變數i...
常量指標和指標變數
const int p,int const p 常量指標 該指標所指向的變數的值不能通過這個指標來修改,但可以通過原變數來修改,可以改變指標所指向的物件 int a 7,b 8 const int p a p 19 這個語句出現錯誤 a 17 可以通過原變數來修改值 p b 改變指標所指向的變數 i...
c語言指標 指標和指標變數
指標是c語言中乙個重要的概念,也是c語言的重要角色。可以說指標是c的精華所在,學習指標雖然不易,但是只要肯花上時間去反覆的理解和實踐,就一定可以很好的掌握它。一 指標是什麼 指標到底是什麼?我們先舉乙個例子。假設我們在火車站 附近開了一家賓館,這家賓館有三千多間屋子,為了方便管理,我們給每個房間都加...