需要一些关于基本类型如何受限定符和复合类型影响的解释

时间:2015-08-21 00:09:51

标签: c++ pointers types

我正在学习C ++,我遇到过这个问题,我只需要解释一下,我猜我需要阅读我的书。

以下所有内容都是合法的。

int a, b = 5, c = 10;
int a = 0, *b = &a, &c = a;
int a, *const b = &a, c = 10;

但这样做是违法的,或者至少是''现在还不是一个常规。

int a = 0, const b = 5, c = 0;

*编辑,我想我自己也得到了它,因为指针是一个对象,就像' b'只是一个标识符。

1 个答案:

答案 0 :(得分:0)

这是声明构造方式的结果。 简单声明(我们在这里关注的类型)是

  

decl-specifier-seq opt init-declarator-list opt ;

init-declarator-list 只是一个以逗号分隔的 init-declarator 列表,而 init-declarator 是一个声明符后跟可选的初始值设定项

int const b = 5 完全有效)中,const(以及int)是 decl-specifier-seq的一部分; b = 5 init-declarator - b声明符= 5初始化程序

然而,在int * const b = 0;中, decl-specifier-seq 只是int; 声明符* const b - * const一起是 ptr-operator ,它是声明者的一部分。

const b不是有效的声明者,因此int a = 0, const b = 5, c = 0;无效。 * const b是有效的声明者,因此int a, *const b = &a, c = 10;有效。