C++

探究c++中的右左法则(非常好懂)

2018-02-08  本文已影响24人  ManjackGo
typedef int (*OP_FUNC)(int &, int &);
OP_FUNC func_array[4];

可以替换为

int (*array_func[4])(int &, int &);

根据右左法则,知道了是个数组,那么下一步就需要知道数组的类型。往左看发现这个数组的内容都是一些指针,那么下一步是看指针的类型是啥。往右看看到(int &, int &),由于是左括号开头的,所以视为一个整体,也就是说它是一个参数列表,所以这个指针就是个函数指针。既然是函数指针,那么必定会有返回值,往左边看,看到是int,所以指针的类型是函数指针,返回值和参数都在前文说明了。

右左法则详解

例子
int (*(*func)(int *p))[5];
func是一个指针,往右看又看到参数列表(左括号代表即将开始一个参数列表),所以参数列表是(int *p),返回值是一个星号,也就是指针。然后看这个指针是指向什么的,指向了右边一个[5],说明这是一个指向数组的指针。最后看这个数组的类型,类型是int。
画图解释

pic.jpg

char *var[10] 先看右边,知道var是个数组。是个什么数组呢,是个指针数组。什么指针,是个char指针。

又如int(*func(int *p))[5];
func是一个函数,参数列表(int *p),返回类型是一个指针,指针指向一个内部类型为int的长度为5的数组。这是一个函数定义。

上一篇 下一篇

猜你喜欢

热点阅读