需要解释一下限定符和复合类型是如何影响基类型的吗 我正在学习C++,我遇到了这个问题,我只需要解释一下,我猜我需要读一下我的书。

需要解释一下限定符和复合类型是如何影响基类型的吗 我正在学习C++,我遇到了这个问题,我只需要解释一下,我猜我需要读一下我的书。,c++,pointers,types,C++,Pointers,Types,以下都是合法的 int a, b = 5, c = 10; int a = 0, *b = &a, &c = a; int a, *const b = &a, c = 10; 但这样做是违法的,或者至少“b”现在不是常量 int a = 0, const b = 5, c = 0; *编辑,我想我自己也有,这是因为指针是一个对象,像“b”一样只是一个标识符。这是声明构造方式的结果。一个简单的声明(我们在这里关注的类型)是 decl说明符seqopt init声明符li

以下都是合法的

int a, b = 5, c = 10;
int a = 0, *b = &a, &c = a;
int a, *const b = &a, c = 10;
但这样做是违法的,或者至少“b”现在不是常量

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

*编辑,我想我自己也有,这是因为指针是一个对象,像“b”一样只是一个标识符。

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

decl说明符seqopt init声明符listopt

init声明器列表只是一个逗号分隔的init声明器列表,init声明器是一个声明器,后跟一个可选的初始值设定项

int const b=5
(完全有效)中,
const
(连同
int
)是decl说明符seq的一部分;
b=5
是初始声明符,
b
是声明符,
=5
是初始值设定项

int*常数b=0int
;声明符是
*const b
*const
一起是一个ptr运算符,它是声明符的一部分


const b
不是有效的声明符,因此
int a=0,const b=5,c=0无效
*constb
是一个有效的声明符,因此
inta,*constb=&a,c=10有效。

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

decl说明符seqopt init声明符listopt

init声明器列表只是一个逗号分隔的init声明器列表,init声明器是一个声明器,后跟一个可选的初始值设定项

int const b=5
(完全有效)中,
const
(连同
int
)是decl说明符seq的一部分;
b=5
是初始声明符,
b
是声明符,
=5
是初始值设定项

int*常数b=0int
;声明符是
*const b
*const
一起是一个ptr运算符,它是声明符的一部分


const b
不是有效的声明符,因此
int a=0,const b=5,c=0无效
*constb
是一个有效的声明符,因此
inta,*constb=&a,c=10是有效的。

是的,its
const int b
不是
int const b
但是为什么我可以声明一个非const int,然后声明一个const指针呢。但不要先声明一个非常量int,然后再声明一个常量int。这可能是“警告C4228:使用了非标准扩展:忽略声明器列表中逗号后的限定符”?声明器的语法就是这样工作的。我想我自己也知道了,因为指针是一个对象,而像“b”这样的对象只是一个标识符。是的,its
const int b
不是
int const b
,但是为什么我可以声明一个非const int,然后声明一个const指针呢。但不能先声明一个非常量int,然后再声明一个常量int。这可能是“警告C4228:使用了非标准扩展:声明器列表中逗号后的限定符被忽略”吗?声明器的语法就是这样工作的。我想我自己也得到了它,因为指针是一个对象,像“b”这样的东西只是一个标识符。