C語言之指標(1)

2021-08-14 16:50:31 字數 883 閱讀 7001

1.廣義上說,常說的「指標」包括指標變數和指標常量,它們統稱為指標,在大多說情況下,指標指指標變數,存放記憶體位址。

2.指標變數的型別作用

某型別一級指標變數 = 該型別一級位址

某型別二級指標變數 = &(該型別一級指標變數 )

n+1級指標變數 = &(n級指標變數)

int *p = &a;

p中只存放了a首位元組位址,但是int說明了*p希望訪問的空間有4個位元組,所以從p所指的a的第乙個位元組向後數三個位元組空間,一共四個位元組空間才是*p實際希望訪問的完整空間。

3.指標的作用

比如fun1函式有乙個自動區域性變數a,它的作用被侷限在fun1函式內部,fun2函式是無法訪問的;如果fun2想訪問fun1中a的話,我們可以將a的位址傳遞給fun2函式,當然前提是fun1的a沒有被自動釋放。

再比如,函式也是有作用域的,跨檔案的作用域又稱為鏈結域。為了防止本檔案的函式(fun)不被其它檔案的同名函式干擾,同時也不干擾別的函式,我們往往會在fun函式的前面加乙個static標誌,將其作用域固定在本檔案,其他檔案通過fun函式名是無法訪問的。但是如果其他檔案的函式fun1又確實想訪問fun函式,那應該怎麼辦呢?我們只需要將fun函式的位址傳遞給fun1函式,就可以跨檔案訪問fun函式,並且不會受到static的影響。

所以,位址還是擴大變數或函式作用域的有效手段。

4.指標使用三部曲

i.  int *p = null;//初始化一下,防止野指標(定義)

ii. int a = 10;

p = &a;        //a空間的首位址給了p,所以p裡面的位址常量指向了a空間(關聯)

iii. int b = *p;   //讀值操作,等價於b = a

*p = 30;      //寫值操作,等價於a = 30

C語言之指標 1

第一次寫部落格,若有不當之處,請指出,謝謝。最近忙於面試,對於指標有一點新的認識,寫下感悟與大家分享。面試題目,將0x04030201變成0x01020304,剛開始沒有多想,之前寫過暫存器,就想了乙個蠢方法。通過按位與將0x04030201中的4個位元組拆成0x04,0x03,0x02,0x01,...

指標 C語言之魂(1)

根據自己的學習進度,本篇部落格將會對c語言的靈魂部分 指標做乙個初級的描述,以及一些基本細節的講解。歡迎閱讀指正。指標 pointer 是程式語言中的乙個物件,利用位址,它的值直接指向 points to 存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。...

C語言之指標

指標型別的本質分析 1 指標的本質 指標的本質 一種復合的資料型別。下面我將以下面幾個作為例子進行展開分析 a int p b int p c int parvalue 3 d int pfun 分析 所謂的資料型別就是具有某種資料特徵的東東,比如資料型別char,它的資料特徵就是它所佔據的記憶體為...