先热个身!
1.
int abc();
解答
:
声明一个函数,无参数,返回值为int;
2.
int abc[3];
解答
:
声明了一个拥有三个int元素的数组;
3.
int **abc();
解答
:
函数名为abc,无参数,返回值为int**
4.
int (*abc)();
解答
:
拿掉abc这个名字,我们来观察类型——int (*)()
,这是一个无参数,返回值为int的函数指针,故abc为函数指针。
让我们加点力度!
5.
int (*abc)[6];
解答
:
如果一眼看不出来,就先把名字去掉观察类型——int (*)[6]
,这是一个数组指针,故abc是一个指向拥有6个整型的数组
的指针
6.
int *abc();
解答
:
abc为函数指针,指向一个无参数,返回值为int的函数;
7.
int **(*abc[6])();
解答
:
[]
的优先级比*
高,所以abc先和[]
结合,所以abc首先是一个数组,那数组里的元素是什么呢?- 类比int a[6],如果把数组名a以及[6]先拿掉,剩下的就是数组元素类型int。
- 这里我们把abc[6]拿掉,剩下——
int** (*)()
,这依然是一个函数的指针,无参数,返回值为 int **; - 所以abc是一个数组,拥有6个元素,每个元素为函数指针。
再加把火!
8
int **abc[6];
解答
:
有了之前的解答,依然先把abc[6]拿走,剩下——int**
,所以abc是一个数组,有6个元素,每个元素的类型是int**
9
int *(*abc)[6];
解答
:
这里先将abc与*
结合,那abc首先是一个指针,拿走abc,剩下 ——int* ( * )[6]
,这是一个数组指针,所以abc是一个数组指针,指向一个拥有6个元素的数组,其中每个元素的类型为int*
10
int *(*abc())();
解答
:
()
的优先级较*
更高,故abc()首先是一个无参数的函数,那abc的返回值是什么呢?- 我们把abc()先暂时拿走,就能看清楚abc的返回值——
int* (*)()
,这是个函数指针,无参数,返回值为int* - 所以abc是一个函数,无参数,返回值为函数指针