美文网首页C++
探究c++中的右左法则(非常好懂)

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

作者: ManjackGo | 来源:发表于2018-02-08 18:17 被阅读24次
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的数组。这是一个函数定义。

相关文章

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

    可以替换为 根据右左法则,知道了是个数组,那么下一步就需要知道数组的类型。往左看发现这个数组的内容都是一些指针,那...

  • [进阶]C++:算数运算

    左值和右值 理解这两个意思对后面的内容非常重要。C++的表达式不是左值,就是右值。在C++中可以归纳为:当一个对象...

  • 右值引用

    参考资料 谈谈 C++ 中的右值引用C++11 左值、右值、右值引用详解

  • 左值右值引用和移动构造

    左值与右值 左值引用右值引用 C++ 11中用&表示左值引用,用&&表示右值引用 (move函数可以把一个) 进...

  • C++中的左值和右值

    在C/C++中,左值(lvalue)和右值(rvalue)是用于规定表达式(expression)的性质。C++中...

  • C++11右值引用、移动语义和完美转发

    左值、右值 在C++中,所有的值不是左值,就是右值。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束后...

  • C++11那些难事:左值引用、右值引用与完美转发

    上一篇C++那些难事:左值与右值搞明白左值与右值,下面讲解左值引用与右值引用。 1. 左值引用与右值引用 左值右值...

  • C++11之move语义

    要理解c++11的move语义,就需要理解C++中的左值和右值和临时对象的概念。 左值与右值和临时对象的简单介绍:...

  • 干活

    “砰,砰,砰”。咦?这是什么声音,“左中右,左中右,左中右……”一个左中右,三声“砰”。 “钱宇...

  • 理解c++中左值、右值

    说明 c/c++程序员肯定都知道左值、右值,理解好左值、右值有利于我们更好的使用c++语言。下面是我的学习笔记 概...

网友评论

    本文标题:探究c++中的右左法则(非常好懂)

    本文链接:https://www.haomeiwen.com/subject/dsattftx.html