在一些新手看來,指針有時候是數組,數組有時候也是指針,其實這根本就是錯誤的,指針和數組就是兩回事,他們沒有任何關
系,只是訪問元素的形式相似罷了,下來我們來辨析幾個概念:
1.指針數組
指針數組是指針還是數組,就看最後兩個字,那就是數組,是一個存放指針的數組。
int *arr[10];
這裏的arr就是一個指針數組。
2.數組指針
顧名思義,就是一個指向數組的指針。
int (*p)[10];
是不是和指針數組的表示方式很相似,其實區分是數組還是指針,就看p先和誰結合,[ ]的優先級高於*。
3.函數指針
就是一個指針,裏面放的是函數的地址,例如 void (*fun)( );這裏fun就是函數指針,函數的void類型,裏面沒有參數。
4.函數指針數組
根據上文知道,這是一個數組,裏面存放的是函數指針,例如:int (*parr1[10]])(); 函數指針數組有很多用途,例如轉移表。
5.函數指針數組的指針
void (*pfun)(const char*) = test;
//函數指針的數組pfunArr
void (*pfunArr[5])(const char* str);
pfunArr[0] = test;
//指向函數指針數組pfunArr的指針ppfunArr