【发布时间】:2011-12-26 20:47:15
【问题描述】:
据我了解,const 修饰符应该从右向左阅读。从那,我明白了:
const char*
是一个指针,它的char元素不能修改,但指针本身可以,并且
char const*
是一个指向mutable 字符的常量指针。
但我收到以下代码的以下错误:
const char* x = new char[20];
x = new char[30]; //this works, as expected
x[0] = 'a'; //gives an error as expected
char const* y = new char[20];
y = new char[20]; //this works, although the pointer should be const (right?)
y[0] = 'a'; //this doesn't although I expect it to work
那么...是哪一个?是我的理解还是我的编译器(VS 2005)错误?
【问题讨论】:
-
如有疑问,请始终使用Spiral Rule。
-
"...其 char 元素可以修改,但指针本身可以,并且..." — 我认为您的意思是说“不能”那些“罐头”之一,但我不知道你有多困惑,所以我不知道要纠正哪个:P
-
试试这个网站:www.cdecl.org
-
编译器永远不会错;) span>