解读C++中复杂的C/C++声明

开发 后端
对于每一个IT行业的从业人员,无论是开发人员、项目经理、还是测试人员,C++中的C/C++声明对于他们这些搞开发的人来说是很头疼的一件事。

怎么去学习和理解C和C++的复杂类型声明,下面的文章就开始一步一步教会你如何理解这种复杂的C/C++声明, 本文将对C/C++声明的深刻含义进行解说,并详述C/C++声明的使用方法与技巧

我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,***介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。 需要强调一下的是。

复杂的C/C++声明并不是好的编程风格;我这里仅仅是教你如何去理解这些声明。注意:为了保证能够在同一行上显示代码和相关注释,本文***在至少1024x768分辨率的显示器上阅读。 让我们从一个非常简单的例子开始,如下:

  1. const int n=5; int const m=10

这个应该被理解为“declare p as an int *”(p是一个int *型的变量),或者说p是一个指向一个int型变量的指针。我想在这里展开讨论一下:我觉得在声明一个指针(或引用)类型的变量时,***将*(或&)写在紧靠变量之前,而不是紧跟基本类型之后。这样可以避免一些理解上的误区,比如:

  1. #include   <iostream.h>     
  2.  #include   <string>     
  3.  int   main()     
  4.  {     
  5.    string   word;     
  6.    while   (   cin   >>   word   )     
  7.                cout   <<   "word   read   is:   "   <<   word   <<   '\n';     
  8.      
  9.    cout   <<   "ok:   no   more   words   to   read:   bye!\n";     
  10.    return   0;     
  11.  }  

这里,p被声明为一个指向一个4元素(int类型)数组的指针,而q被声明为一个包含5个元素(int类型的指针)的数组。另外,我们还可以在同一个声明中混合实用*和&,如下:

  1. const int n=5; int const m=10

这里p被声明为一个函数指针,这个函数带一个char类型的参数,并且有一个int类型的返回值。另外,带有两个float类型参数、返回值是char类型的指针的指针的函数指针可以声明。

同样,在C++中也是如此,如果你从学习C++一开始就抱着这种态度的话,那么即便等到面试的时候被问到某个语言细节。你也可以胸有成竹的说你虽然并不知道这个细节,但在实际编码中遇到相应问题的时候肯定会找到合适的参考资料并很快解决问题(解决问题,才是最终目的)。

当然,更大的可能性是,你在平常编码中已经接触过了最常见的那80%的陷阱和技巧了,由于你用的是实践指导性的学习方式,所以你遇到的需要去学习的陷阱和技巧几乎肯定都是常见场景下的。比没头苍蝇似的逮住一本C/C++“经典”就“细细研读”的办法要高效N倍,因为在没有实践经验的情况下,你很可能会认为其中的每个技巧,每个陷阱,都是同样概率发作的。

【编辑推荐】

  1. 简介学习C++总结之谈
  2. 对C++库函数进行学习探索总结笔记
  3. C++类库设计的基本构思与方法
  4. C++语言真的还有市场价值?
  5. C++类库设计的基本构思与方法
责任编辑:chenqingxiang 来源: NET130
相关推荐

2011-03-31 09:30:07

CC++声明

2010-02-05 11:23:01

C++声明语法

2010-01-21 10:23:53

C++代码

2010-01-21 09:34:57

C++语法

2010-01-27 16:05:06

C++堆栈

2010-01-25 10:25:19

C++变量

2010-01-28 16:31:54

C++类型

2010-01-27 17:16:52

C++构造函数

2010-01-20 10:19:55

C++数组

2020-08-21 13:20:36

C++If ElseLinux

2010-01-21 13:33:44

C++基类

2010-01-26 10:42:26

C++函数

2010-01-26 14:35:11

C++关键字

2016-10-20 16:07:11

C++Modern C++异步

2010-01-28 11:08:09

C++变量

2010-01-28 13:27:12

C++类定义

2010-01-19 13:43:59

C++函数

2015-05-13 10:37:58

C++指针与引用

2010-02-01 11:22:09

C++虚函数

2010-01-20 09:54:27

C++数据类型
点赞
收藏

51CTO技术栈公众号