首先我们一听函数指针数组是不是有点绕,其实不要想多了,就简单的来考虑,函数指针数组。首先它就是一个数组,然后是一个指针,一个函数指针指向了这个数组。下面我们来举一个简单的例子
char* (*p[3])(char* p)
这是一个数组,它的数组名是p,数组里面存了三个指向数组的指针,这些指针的类型是指向字符的指针、参数是一个指向字符的指针的函数。最关键的是要认清楚他是一个数组,一个指针数组。
下面我们来看一下函数指针数组的指针,第一感觉是不是很难懂,函数指针数组都没搞懂,还弄什么函数指针数组的指针。其实这个也是很简单的,首先我们明白它是一个指针,指向哪里呢?它指向的是一个数组,这个数组里面存的是指向函数的指针,清楚明了。
让我们来看一个简单的例子:
char* (*(*p)[3])(char*r)
看这种比较难看明白的一大串是有方法的:首先我们就要从中间慢慢的剥开,第一,P它是一个实实在在的指针,它指向了三个元素的数组,这个数组里面存的是三个指向函数的指针,这些函数的返回值类型是指向字符型的指针,参数是指向字符的指针。这样一层一层的剥开是不是问题就迎刃而解了。