目录
1. 指针数组
char *str[10];
指针数组,顾名思义是一个 数组,其元素是一个 指针。
上述代码是定义一个指针数组,其数组元素为指向字符的指针。
所谓指针数组,重头戏在于数组,指针可以抽象为修饰符,那么如何来理解指针数组呢?很简单,[] 的优先级高于 *,因此 [] 先被结合,加上数组名,就构成了数组。
2. 数组指针
int (*p)[10];
数组指针,顾名思义是一个 指针,其指向一个 数组。
上述代码是定义一个数组指针,其指向一个大小为 10 个整型数字的数组。
所谓数组指针,重头戏在于指针,数组可以抽象为修饰符,那么如何来理解数组指针呢?很简单,() 的优先级高于 [],而 () 内部是一个指针变量,这样就可以判断是数组指针了。
3. 函数指针
int (*fun)();
函数指针,顾名思义是一个 指针,其指向一个 函数。
上述代码是定义一个函数指针,其指向一个函数。
所谓函数指针,重头戏在于指针,函数可以抽象为修饰符,那么如何来理解函数指针呢?很简单,() 的结合性为从左到右,第一个 () 内部是一个指针变量,第二个 () 是函数调用操作符,它迫使间接访问在函数调用之前进行,使得 fun 成为一个函数指针,它指向的函数返回一个整型值。
4. 函数指针数组
int (*fun[])();
函数指针数组,顾名思义是一个 数组,其数组元素为一个 指向函数地址的 指针。
上述代码是定义一个整型函数指针数组,其数组元素为一个指向函数地址的指针。
所谓函数指针数组,重头戏在于数组,函数指针可以抽象为修饰符,那么如何来理解函数指针数组呢?很简单,() 的结合性为从左到右,第一个 () 内部是一个指针数组,第二个 () 是函数调用操作符。
5. 函数指针的数组的指针
int (*(*fun)[])();
函数指针的数组的指针,顾名思义是一个 指针,其指向一个 数组,数组元素为一个 函数指针。
上述代码是定义一个整型函数指针数组指针,其指向一个函数指针数组。