Theo hiểu biết của tôi, các const
bổ ngữ nên được đọc từ phải sang trái. Từ đó, tôi hiểu rằng:
const char*
là một con trỏ có các phần tử char không thể sửa đổi, nhưng bản thân con trỏ có thể, và
char const*
là một con trỏ liên tục đến các mutable
ký tự.
Nhưng tôi gặp các lỗi sau cho mã sau:
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
Vì vậy, đó là một trong nó? Sự hiểu biết của tôi hoặc trình biên dịch của tôi (VS 2005) có sai không?