C語言指標

2022-04-25 23:30:49 字數 1239 閱讀 4304

1.由於兩個函式的作用域不同,因而它們的區域性變數互不可見,要想讓乙個函式能夠訪問另乙個函式裡的變數,只能使用指標的間接的訪問。

2.程式執行時申請的記憶體空間只有位址,沒有名稱,因此指標成為訪問動態記憶體的唯一工具,指標直接訪問記憶體的形式簡化了許多複雜的資料結構的表示。

3.純指標:void *p; 表明指標變數與位址有關,但不明確儲存在此位址上的物件型別,有時稱這樣的指標為"純指標"

純指標仍然有自己的記憶體單元,但它指向的物件不明確。通常,void *指標只有幾種有限的用途:

1.與另乙個指標進行比較

2.指向函式傳遞void *指標或從函式返回void *指標

3.給另乙個void *指標賦值。

4.關於指標的術語:0值指標 稱空指標 沒有初始化的指標 稱野指標 指標指向的物件已經釋放 稱迷途指標

指標的運算:

指標的運算主要是給定範圍內指標的算術運算、比較運算、型別轉換等。由於指標資料的特殊性,因此要特別注意指標運算的位址意義。

1.指標的算術運算

(1).指標加減整數運算

設p是乙個指標,n是乙個整形,則p+n的結果是乙個指標,指向【p所指物件】後的第n個【物件】

即 p+n*sizeof(type)

(2)指標變數的自增自減運算:類(1)

運算級問題:

*p++等價於*(p++)

*++p等價於*(++p)

(3)兩個指標相減運算

設p1,p2是同乙個指向型別的兩個指標,則p1-p2的結果為兩個指標之間物件的個數,如果p2的位址值大於p1結果為正,否則為負。

2.指標的關係運算

設p1,p2是同乙個指向型別的兩個指標,則p2和p1可以進行關係運算,用於比較這兩個位址的位置關係

運算子:==、!=、>、<

3.指標的型別轉換

4.指標的賦值運算

5.void * 指標的元算特殊性

void *指標不能進行算術運算,原因是指向的型別不明確,因而就無法確定指標運算後的指向。

可以將其強制型別轉換後再運算,即必須是指向完整型別物件的指標才能進行運算

6.陣列指標

指向型別 (*指標變數名) ....

7.指標陣列

指向型別 *陣列名....

即每乙個元素都是乙個指標

8.指向指標的指標

多級指標

9.指向字串的指標

10.指向函式的指標

函式的引用方式:

(*函式指標)(實參) 或 函式指標(實參)

C語言指標

指標變數是包含記憶體位址的變數,它指向記憶體中的一塊區域,通過指標的值,可以間接訪問到相應的記憶體單元的資料,並做相應的修改。1 指標的定義和簡單使用 定義乙個指標變數和定義一般的變數類似,只需在變數名前面加乙個 對乙個指標變數賦值可以用取位址符 來獲取到乙個變數的位址,如果要獲得指標指向的記憶體區...

C語言指標

1 定義指標變數void change int n 格式 變數型別 變數名 定義了乙個指標變數p 指標變數只能儲存位址 指標變數p前面的int 指標變數p只能指向int型別的資料 int main void change int n 2 指標與陣列 陣列名其實質是乙個指標,但是它和普通的指標變數還是...

c語言指標

編寫程式,在主函式裡用指標陣列輸入六個字串,再用另乙個函式對這六個字串排序,並在主函式中輸出排好序的字串。include void sort char s,int n char temp for int i 0 ifor int j 0 jif strcmp s j s j 1 0 temp s j...