標籤:size 為什麼 個數 定義 color 數組指標 函數指標 一點 名稱
數組指標是指一個指向數組的指標,例如有一個數組指標p指向一個數組a[],則 *p是取到這個數組,也就是說 *p=a,因此 **p =a[0],
它的定義為:
int a[10];int (*c)[10]=&a;
(*c)表示它是一個指標,若不加括弧則變成 指標數組 ,[10]表示指向一個長度為10的數組,int 表示數組元素為int
因為函數不能返回數組,所以可以設定返回一個數組指標,即
auto fo2(int (&a)[10]) -> int (*)[10]{ a[5]=10; return &a;}
int (&a)[10] 是一個數組引用,
這裡定義fo2的傳回型別用了尾置傳回型別,int (*)[10]是傳回型別。如果直接定義函數,是
int (*fo2(int (&a)[10]))[10];
還是尾置返回清楚一點,:)
事實上雖然為了用指標指向一個數組可以用 int *p=a這樣的方式,不過其實這裡a跟p是兩個東西,p只不過是指向了a頭元素的地址,
因此sizeof(a) != sizeof(p),這裡也就能理解為什麼要用數組引用了,採用了數組引用後,
int fo(int *p){ return sizeof(p);}int fo1(int (&p)[10]){ return sizeof(p);}
fo1返回的就是正確的數組記憶體大小。
函數指標:
使用別名的方式:
typedef int (*f)(int);
f func;
直接定義:
int (*func)(int);
func可以指向任意一個參數為int ,返回為int的函數。
還可以定義函數指標數組:
int (*func[10])(int);
其實都跟定義數組差不多,形式上與函數保持一致就行了。
還有諸如指標的指標的引用:
int a;int *p=&a;int **&pp=&p;
引用也只是在名稱前加個引用。
[C++]數組指標,數組引用,函數指標