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

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

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

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

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

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

#include   <iostream.h>     



 #include   <string>     



 int   main()     


 {     


   string   word;     



   while   (   cin   >>   word   )     




               cout   <<   "word   read   is:   "   <<   word   <<   '\n';     



     



   cout   <<   "ok:   no   more   words   to   read:   bye!\n";     



   return   0;     


 }  

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

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

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

相关推荐