指標分析
指標的型別:把指標宣告語句裡的指標名字去掉,剩下的部分就是這個指標的型別
指標所指向的型別:把指標宣告語句中的指標名字和名字左邊的指標宣告符*去掉,剩下的就是指標所指向的型別(在指標的算術運算中,指標所指向的型別有很大的作用)
指標本身所佔據的記憶體區:用函式sizeof(指標的型別)可以測出指標本身所佔據的記憶體區(在 32位平台裡,指標本身佔據了 4個位元組的長度)
1.指標型別分析
分析指標,可以從變數名處起,根據運算子優先順序結合,一步一步分析.
1 int p;//這是乙個普通的整型變數
2 int *p;//首先從p處開始,先與*結合,所以說明p是乙個指標,然後再與int結合,說明指標所指向的內容的型別為int 型.所以 p是乙個返回整型資料的指標
3 int p[3];//首先從p處開始,先與結合,說明p 是乙個陣列,然後與int結合,說明陣列裡的元素是整型的,所以 p是乙個由整型資料組成的陣列
4 int *p[3];//首先從p處開始,先與結合,因為其優先順序比*高,所以p是乙個陣列,然後再與*結合,說明陣列裡的元素是指標型別,然後再與 int結合,說明指標所指向的內容的型別是整型的,所以是乙個由返回整型資料的指標所組成的陣列
5 int (*p)[3];//首先從p處開始,先與*結合,說明p是乙個指標然後再與結合(與"()"這步可以忽略,只是為了改變優先順序),說明指標所指向的內容是乙個陣列,然後再與int 結合,說明陣列裡的元素是整型的.所以p是乙個指向由整型資料組成的陣列的指標
6 int **p;//首先從 p開始,先與*結合,說明p是乙個指標,然後再與*結合,說明指標所指向的元素是指標,然後再與 int結合,說明該指標所指向的元素是整型資料. 所以p是乙個返回指向整型資料的指標的指標
7 int p(int);//從p處起,先與()結合,說明p是乙個函式,然後進入()裡分析,說明該函式有乙個整型變數的引數然後再與外面的int 結合,說明函式的返回值是乙個整型資料.所以p是乙個有整型引數且返回型別為整型的函式
8 int (*p)(int);//從p處開始,先與指標結合,說明p是乙個指標,然後與()結合,說明指標指向的是乙個函式,然後再與()裡的int 結合,說明函式有乙個int 型的引數,再與最外層的int 結合,說明函式的返回型別是整型,所以p是乙個指向有乙個整型引數且返回型別為整型的函式的指標
9 int *(*p(int))[3];//從 p開始,先與()結合,說明p是乙個函式,然後進入()裡面,與int結合,說明函式有乙個整型變數引數,然後再與外面的*結合,說明函式返回的是乙個指標,,然後到最外面一層,先與結合,說明返回的指標指向的是乙個陣列,然後再與*結合,說明陣列裡的元素是指標,然後再與int 結合,說明指標指向的內容是整型資料.所以p是乙個引數為乙個整數且返回乙個指向由整型指標變數組成的陣列的指標變數的函式
2. 運算子&和*
&是取位址運算子,*是間接運算子。
&a的運算結果是乙個指標,指標的型別是a的型別加個*,指標所指向的型別是a的型別,指標所指向的位址嘛,那就是a的位址。
3. 陣列和指標的關係
陣列的陣列名其實可以看作乙個指標。
宣告了乙個陣列 type array[n],則陣列名稱array就有了兩重含義:
第一,它代表整個陣列,它的型別是 type[n];
第二 ,它是乙個常量指標,該指標的型別是type*,該指標指向的型別是 type,也就是陣列單元的型別,該指標指向的記憶體區就是陣列第0號單元,該指標自己占有單獨的記憶體區,注意它和陣列第0號單元佔據的記憶體區是不同的。該指標的值是不能修改的,即類似 array++的表示式是錯誤的。
4. 指標和函式的關係
可以把乙個指標宣告成為乙個指向函式的指標,從而通過函式指標呼叫函式。讓我們舉乙個例子來說明一下吧。
int fun(char *,int);
int (*pfun)(char *,int);
pfun=fun;
int a=(*pfun)("abcdefg",7);
例中,定義了乙個指向函式fun的指標pfun,把pfun作為函式的形參。把指標表示式作為實參,從而實現了對函式fun的呼叫。
C語言指標總結
2012 03 07 07 22 標籤 c語言 分類 pointer c語言中的精華是指標,這也是c語言中唯一的難點。c是對底層操作非常方便的語言,而底層操作中用到最多的就是指標,以後從事嵌入式開發的朋友們,指標將陪伴我們終身。1.指標型別分析 分析指標,可以從變數名處起,根據運算子優先順序結合,一...
C語言指標總結
c語言中的精華是指標,這也是c語言中唯一的難點。c是對底層操作非常方便的語言,而底層操作中用到最多的就是指標,以後從事嵌入式開發的朋友們,指標將陪伴我們終身。1.指標型別分析 分析指標,可以從變數名處起,根據運算子優先順序結合,一步一步分析.int p 這是乙個普通的整型變數 int p 首先從 p...
C語言指標總結
c語言中的精華是什麼,答曰指標,這也是c語言中唯一的難點。c是對底層操作非常方便的語言,而底層操作中用到最多的就是指標,以後從事嵌入式開發的朋友們,指標將陪伴我們終身。本文將從八個常見的方面來透視c語言中的指標,當然,還有其他沒有具體提到的方面,像指標表示式 指標安全等問題,以後有機會我再慢慢補充。...