为什么C和C ++中的声明如此复杂?

时间:2015-04-28 21:19:20

标签: c++ c

初学者经常会惊讶地发现声明

int* a, b;

a声明为intb作为int的指针。这源于C和C ++中的声明分为说明符声明符的奇怪方式。声明以单个说明符列表开头,但声明的每个实体都有自己的声明符,它独立地修改说明符以提供实体的结果类型。因此,上述声明有两个声明者*ab。第一个声明符中的*int说明符结合使用,为int*提供a类型,第二个声明符没有修饰符,因此结果类型只是{ {1}}。

同时,在某些情况下,需要类型名称(C ++中的 type-id ),它是说明符和可选的“抽象声明符”的组合。 ,这基本上是一个省略名称的声明者。例如int是类型名称。但类型名称不直接用于声明。如上所述,int*不会被解释为类型名称,后跟两个标识符,正如人们所期望的那样。

所以我们有两个形成类型名称的说明符,声明符和组合,但类型名称不用于声明相应类型的变量,即使它们实际上是类型的名称,定义为只缺少名称。 这种语法的历史原因是什么,复杂且违反直觉?能够编写这样的代码有什么好处吗?

int* a, b

0 个答案:

没有答案