引導語:在資訊工程中,指標是一個用來指示一個記憶體地址的計算機語言的變數或中央處理器(CPU)中的暫存器(Register)。以下是本站小編向大家介紹一下C語言指標,歡迎閱讀!
1.1 指標與指標變數的概念,指標與地址運算子
1.在C語言中,指標是指一個變數的地址,通過變數的地址″指向″的位置找到變數的值,這種″指向″變數地址可形象地看作″指標″。用來存放指標的變數稱為指標變數,它是一種特殊的變數,它存放的是地址值。
2.定義指標變數的一般形式為:
型別名 *指標變數1,*指標變數2,…;
″型別名″稱為″基型別″它規定了後面的指標變數中存放的資料型別,″*″號表明後面的″指標變數1″,″指標變數2″等是指標變數,″*″號在定義時不能省略,否則就會變成一般變數的定義了。″指標變數1″,″指標變數2″等稱為指標變數名。
3.一個指標變數只能指向同一型別的變數。
4.與指標和指標變數有關的兩個運算子:
(1)*:指標運算子(或稱″間接訪問″運算子)
(2)&:取地址運算子
通過*號可以引用一個儲存單元,如有如下定義:
int i=123,*p,k;
則 p=&I;或k=*p;或k=*&I;都將變數i中的值賦給k。
*p=10;或*&i=10;都能把整數10賦給變數i。這裡,等號左邊的表示式*p和*&i都代表變數i的儲存單元。
1.2 變數、陣列、字串、函式、結構體的指標以及指向它們的指標變數
1.變數的指標和指向變數的指標變數。
2.陣列的'指標和指向陣列的指標變數。
所謂陣列的指標是指陣列的起始地址,陣列元素的指標是陣列元素的地址。
C語言規定陣列名代表陣列的首地址,也就是第一個元素的地址。
3.字串的指標和指向字串的指標變數。
我們可以通過定義說明一個指標指向一個字串。
C語言將字串隱含處理成一維字元陣列,但陣列的每個元素沒有具體的名字,這一點跟字元陣列不一樣。要引用字串中的某個字元,只能通過指標來引用:*(s+0),*(s+1),…,*(s+n)。
4.函式的指標和指向函式的指標變數。
指向函式的指標變數的一般形式為 :
資料型別識別符號 (*指標變數名)();
這裡的″資料型別識別符號″是指函式返回值的型別。
函式的呼叫可以通過函式名呼叫,也可以通過函式指標呼叫(即用指向函式的指標變數呼叫)。
指向函式的指標變量表示定義了一個指向函式的指標變數,它不是固定指向哪一個函式,而只是定義了這樣的一個型別變數,它專門用來存放函式的入口地址。在程式中把哪一個函式的地址賦給它,它就指向哪一個函式。在一個程式中,一個指標變數可以先後指向不同的函式。
在給函式指標變數賦值時,只需給出函式名而不必給出引數。因為函式指標賦的值僅是函式的入口地址,而不涉及到實參與形參的結合問題。
對指向函式的指標變數,表示式p+n,p++,p--等都無意義。
5.結構體的指標與指向結構體的指標變數
一個結構體變數的指標就是該變數所佔據的記憶體段的起始地址。可以設一個指標變數,用來指向一個結構體變數,此時該指標變數的值是結構體變數的起始地址。指標變數也可以用來指向結構體陣列中的元素。
1.3 用指標做函式引數
函式的引數不僅可以是整型、實型、字元型等資料,還可以是指標型別,它的作用是將一個變數的地址傳送到另一個函式中。
1.4 返回指標值的指標函式
一個函式可以返回一個整型值、字元值、實型值等,也可以返回指標型資料 ,即地址這種帶回指標值的函式,一般的定義形式為:
型別識別符號 *函式名(形參表);
1.5 指標陣列、指向指標的指標
1.指標陣列指的是一個數組,其元素均為指標型別資料,也就是說,指標陣列中的每一個元素都是指標變數。指標陣列的定義形式為:
型別標識 *陣列名[陣列長度說明]
指標陣列可以使字串處理更加方便。