指標陣列:首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身 決定。它是「儲存指標的陣列」的簡稱。
int *p1[10];
「」的優先順序比「*」要高。p1 先與「」結合,構成乙個陣列的定義,陣列名為 p1,int* 修飾的是陣列的內容,即陣列的每個元素。
陣列指標:首先它是乙個指標,它指向乙個陣列。在 32 位系統下永遠是佔 4 個位元組, 至於它指向的陣列佔多少位元組,不知道。它是「指向陣列的指標」的簡稱。
int (*p2)[10];
在這裡「()」的優先順序比 「」高, 「*」號和 p2 構成乙個指標的定義,指標變數名為 p2,int 修飾的是陣列的內容, 即陣列的每個元素。
函式指標:就是函式的指標。
a) char* (*fun1)(char* p1,char* p2);
b) char* *fun2(char* p1,char* p2);
c) char* fun3(char* p1,char* p2);
a) 這裡 fun1 不是什麼函式名,而是乙個 指標變數,它指向乙個函式。這個函式有兩個指標型別的引數,函式的返回值也是乙個指標。
b) fun2 是函式名,p1,p2 是引數,其型別為 char*型,函式的返回值為 char * *型別,是個 二級指標。
b) fun3 是函式名,p1,p2 是引數,其型別為 char*型,函式的返回值為 char * 型別。
函式指標的使用:
[cpp]view plain
copy
"font-size:18px;"
>#include
#include
char
* fun(
char
* p1,
char
* p2)
else
} intmain()
函式指標陣列:
char* (*pf[3])(char* p);
它是乙個陣列,陣列名為 pf,陣列內儲存了 3 個指向函式的指標。這些指標指向一些返回值型別為指向字元的指標、引數為乙個指向字元的指標的函式。
函式指標陣列的使用:
[cpp]view plain
copy
"font-size:18px;"
>#include
#include
char
* fun1(
char
* p)
char
* fun2(
char
* p)
char
* fun3(
char
* p)
intmain()
函式指標陣列的指標:
char* (*(*pf)[3])(char* p);
這裡的 pf 和函式指標陣列的 pf 就完全是兩碼事了。函式指標陣列的 pf 並非指標,而是乙個陣列名; 這裡的pf 確實是實實在在的指標。這個指標指向乙個包含了 3 個元素的陣列;這個數字裡 面存的是指向函式的指標;這些指標指向一些返回值型別為指向字元的指標、引數為乙個 指向字元的指標的函式。(其實就是
函式指標陣列的指標裡的pf指向的是函式指標陣列的pf(次pf非彼pf))。
函式指標陣列的指標的使用:
[cpp]view plain
copy
"font-size:18px;"
>#include
#include
char
* fun1(
char
* p)
char
* fun2(
char
* p)
char
* fun3(
char
* p)
intmain()
參考書籍:《c 語言深度解剖》陳正衝
指標陣列和陣列指標
有關陣列指標和指標陣列容易混淆,本文舉例說明兩者的區別,並加以分析。基本概念 指標 inta 1 int p a 指標的指標 int p2p p 簡單陣列 intb 20 指標陣列 int p 10 指標陣列,含有10個指標元素,即每乙個元素都是乙個指標 陣列指標 int p 10 這個指標用來指向...
指標陣列和陣列指標
理解這兩個概念,當從語言學的語法角度開始,定語 名詞,即 的 語句。指標陣列 指標的陣列 陣列指標 陣列的指標。一 指標陣列 元素為指標的陣列 顧名思義,就是說的首先是乙個陣列吧,然後陣列的元素是指標而已。說明形式為 type pointer array constant1 constant2 co...
指標陣列和陣列指標
該文時自己對指標陣列用法的一點總結,還望高手指點不足原文如下 由於以前對指標陣列不太明白,所以自己寫了 乙個小的測試程式來驗證了自己的猜測,先總結如下 指標陣列,由名字就可以知道的該陣列中的成員都是為指標的。其定義的方法為 char p 5 該初定義乙個包含5個char 型別的陣列的指標,由於p本身...