一,從字面意思來理解指標陣列和陣列指標
1,指標陣列:實質是乙個陣列,這個陣列裡存放的元素是指標。
2,陣列指標:實質是乙個指標,這個指標指向乙個陣列。
二,分析指標陣列和陣列指標的表示式
int *p[5]; int (*p)[5];int *(p[5])
1,先說說一般規律。
int *p;(p是乙個指標),int p[5];p是乙個陣列。在定義乙個符號的時候,首先要搞清楚定義個符號是誰(找核心);其次再看誰和核心最近、誰跟核心結合(找結合);以後再繼續往外擴充套件(繼續向外結合直到整個符號完)。
2,如果核心和*結合,表示核心是指標;如果核心和[ ]結合,表示核心是陣列;如果核心和( )結合,表示核心是函式。
3,分析三個符號。
int *p[5]; 核心是p,p首先和[ ] 結合(優先順序決定),表示核心是乙個陣列,陣列有五個元素,陣列中的元素都是 int *型別的也就是指標,這些指標指向的元素型別是int ,整個符號就是乙個指標陣列。
int (*p)[5]; 核心是p,首先和*結合,表示核心是乙個指標,這個指標的型別是 int (*)[5]型別,即這個指標指向乙個陣列,這個陣列中有五個int型的元素,整個符號是陣列指標。
int *(p[5]); 核心是p,首先和[ ]結合,表示核心是乙個陣列,陣列有五個元素,陣列中的元素都是int *型別也就是指標,這些指標指向的元素型別是int,整個符號是乙個指標陣列。
三,分析符號含義三步曲
1,找核心。2,找結合。3,繼續向外擴充套件結合。
按照這三步走再複雜的定義也能分析出來。
比如說乙個複雜的:char * (*ptype[5])(char *,const char *)。首先核心是ptype,先和 [ ] 結合,表示ptype是乙個陣列,這個陣列裡有五個元素,再和 * 結合,表示這個陣列的元素是指標,再和( )結合,表示指標的型別是函式,函式有兩個形參,返回值是char *。整體來說,這個符號是乙個函式指標陣列。
C語言指標陣列和陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...
C語言指標陣列和陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...
C語言指標陣列和陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...