很多人都会被C++指针的复杂声明搞混了。其实,读C++指针声明的过程,我们可以遵循2个原则:1、从名字开始,右->左->右->左->右这样来读;2、不断对指针内容进行补完(对于指针,我们要知道指针的类型,知道了指针的类型也就是补完了;对于函数,我们要知道函数的参数和返回值,知道了也算是补完了)。
举个例子:float (*(* fp)(int,int,int))(int)
1、首先从fp开始。我们知道了这个变量的名字是fp;
2、读fp的右边,是),那也就是没内容;
3、读fp左边一直读到左括号,是(*,也就说明fp是个指针;
4、再往右读,是(int,int,int),说明fp指针指向一个参数列表是(int,int,int)的函数;
5、再往左读,是*,说明fp指针指向一个参数列表是(int,int,int),返回值是个指针的函数;
6、再往右读,是),那也就是没内容;
7、往左读到(,没内容;
8、往右读,是(int),说明fp指针指向一个参数列表是(int,int,int),返回值是个函数指针,指向一个参数列表为(int)的函数的函数;
9、再往左读,是float,说明fp指针指向一个参数列表是(int,int,int),返回值是个函数指针,指向一个参数列表为(int),返回值为float的函数的函数;