int *f(); //一個傳回值為int* 的函數
int (*f)(); //一個函數指針,指向一個傳回類型為int的并且無參數的函數
const int n=12;
int *a[n]; //首先,提醒這段代碼在c中不行。 這個是一個具有n個int * 元素的數組
int (*a)[n]; //一個指針,指向一個具有n個int元素的數組。
int(**p)[n]; //一個指針,指向一個指針,後者指向一個具有n哥int元素的數組
int *(*p)[n]; //一個指針,指向一個具有n個int * 元素的數組
int (**const p)()const =0; //一個常量指針,指向一個指向函數的指針。
int* (*p)(); //一個指針,指向一個傳回類型為int* 的函數。
參數和傳回值都會影響指針的類型:
char *(*p1)(int ,int);
char *(*p2)(short,short)=0;
p1=p2; //error 類型不比對
智能指針通過重載->和* (也可能還有->*)操作符,來模仿指針的行為。
函數對象類型通過重載()操作符,來創造類似于函數指針的東西。
在c++中,一個對象可以喲多個有效的位址,是以指針的比較不是關于位址的問題,而是關于對象的“同一性”的問題。