//首先定義一個指針函數和函數指針
//優先級 () * 資料類型
int *p() //首先p與()結合,說明是個一個函數,在與*結合,是以是一個傳回指針的函數,作用和普通函數比是傳回一個int型指針
int (*p)() //首先與*結合,說明是一個指針,再與右邊()結合,是以是一個函數指針,作用和普通指針比是指向一個函數
//指針函數 本質為函數,作用是傳回一個指針
int *p()
{
return 指針(位址);
}
//函數指針 本質為指針,作用是指向函數
//典型的回調函數應用
int Funtion1 (int (*p)() ); //函數指針 接收Fun2作為參數
int Funtion2();
int main(int argc,char *argv[], char **enpv)
{
Funtion1(Funtion2); //Funtion2的傳回值作為Fun1的參數
}
//拓展資料:
main(int argc, char *argv[ ], char **env)才是UNIX和Linux中的标準寫法。
//補充:
數組和函數本質也是指針,其數組名/函數名為位址,是以傳參時,可以直接寫其名,後面不用加[]或() a[3]等價于*a(3)
同理
int *p[n] //指針數組,本質為數組,有n個指針元素組成的數組。
int (*p)[n] //數組指針,本質為指針,指向一維數組的指針,亦稱行指針。
補充:
&a 的運算結果是一個指針,指針的類型是a 的類型加個*,
int *a;則&a的指針類型為*(*a)
int **b=&a=**a,類型比對