美文网首页
C++ 复杂声明

C++ 复杂声明

作者: Anand | 来源:发表于2021-05-20 11:03 被阅读0次

1、方法也是有类型的,方法的类型由返回类型和形参表决定。比如int F (int)的类型就是去掉方法名,int (int)。

2、对于方法类型,在返回类型和形参表之间,加上一个名称F,就表示一个特定的方法F。

3、思考,如果我在返回类型和形参表之间,加上一个指针变量呢?

  表示指向这一类方法的指针。即int (*P) (int),需要特别注意的是,必须使用括号把*P括起来。如果没有括起来,int *P(int),从编译器的角度理解,就变成了返回int指针的方法声明。

4、思考,方法指针也是指针,既然方法能够返回其他指针,当然也可以返回方法指针。

  方法指针的类型就是去掉指针名称,int(*)(int)。从人的角度思考,返回方法指针的方法应该是 int(*)(int) H(int)。但是,我们应该从编译器的角度思考,编译器首先找到方法名,去掉方法名和形参表,剩下的就是返回类型了。因此,实际的写法是int (* H(int)) (int)。

  为了便以理解,使用

  typedef int(*PF)(int);

  PF H (int)。

5、思考,方法指针数组的声明,从人的角度思考,应该是int(*) (int) a[10]; 实际上是 int(* a[10])(int)。

6、思考,指向数组的指针,从人的角度思考,应该是int[10] *p; 实际上是int (*p)[10]。

7、可以认为,编译器并不是从左到右读取声明,而是声明的对象放在了中间,并用括号括起来,保证优先级最高,去掉名称,剩下的就是类型。

8、特别注意,复杂的声明是非常糟糕的编码风格,严重影响代码的可读性,应该尽量避免,可以使用typedef。

原文

相关文章

  • C++ 复杂声明

    1、方法也是有类型的,方法的类型由返回类型和形参表决定。比如int F (int)的类型就是去掉方法名,int (...

  • C++雾中风景番外篇:理解C++的复杂声明与声明解析

    在学习C系列语言的过程之中,理解C/C++的复杂声明一直是初学者很困扰的问题。笔者初学之时也深受困扰,对很多规则死...

  • 2020-07-04 #ifdef __cplusplus ex

    1、声明链接规范混编C和C++是C++提供的功能,所以只能在C++代码中想办法。C++编译器允许在声明中带 ext...

  • C++Primer之 函数探幽

    读C++ primer总结 C++函数包括函数声明和函数定义,函数声明即函数原型,一般隐藏在include文件中。...

  • C++引用C接口

    C++引用C接口 声明的意义

  • C语言/C++编程学习之复杂的C语言/C++声明

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程...

  • C语言/C++编程学习之复杂的C语言/C++声明

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程...

  • C++声明函数

    在文件A中定义函数f;在另一个文件B中调用函数f时,必需进行函数声明。 就是在调用函数的文件顶部声明函数。 在函数...

  • C++声明变量

    一、 #includeusing namespace std; // 变量声明 extern int g; int...

  • C++ 类型声明

    类型别名 typedef关键字 typedef关键字是继承自C语言的特性,利用它我们可以为一个类型起别名,一般用于...

网友评论

      本文标题:C++ 复杂声明

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