需要解释一下限定符和复合类型是如何影响基类型的吗 我正在学习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=0但是,decl说明符seq只是int
;声明符是*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=0但是,decl说明符seq只是int
;声明符是*const b
,*const
一起是一个ptr运算符,它是声明符的一部分
const b
不是有效的声明符,因此int a=0,const b=5,c=0代码>无效*constb
是一个有效的声明符,因此inta,*constb=&a,c=10代码>是有效的。是的,itsconst int b
不是int const b
但是为什么我可以声明一个非const int,然后声明一个const指针呢。但不要先声明一个非常量int,然后再声明一个常量int。这可能是“警告C4228:使用了非标准扩展:忽略声明器列表中逗号后的限定符”?声明器的语法就是这样工作的。我想我自己也知道了,因为指针是一个对象,而像“b”这样的对象只是一个标识符。是的,itsconst int b
不是int const b
,但是为什么我可以声明一个非const int,然后声明一个const指针呢。但不能先声明一个非常量int,然后再声明一个常量int。这可能是“警告C4228:使用了非标准扩展:声明器列表中逗号后的限定符被忽略”吗?声明器的语法就是这样工作的。我想我自己也得到了它,因为指针是一个对象,像“b”这样的东西只是一个标识符。