龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

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

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
怎么去学习和理解C和C++的复杂类型声明,下面的文章就开始一步一步教会你如何理解这种复杂的 C/C++ 声明, 本文将对C/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倍,因为在没有实践经验的情况下,你很可能会认为其中的每个技巧,每个陷阱,都是同样概率发作的。

精彩图集

赞助商链接