编译以下程序
int main(void) {
int const c[2];
c[0] = 0;
c[1] = 1;
}导致错误:指定只读位置‘c’。据我所知,const只适用于c的位置,所以c和c1应该是可变的。为什么会产生这个错误?
发布于 2020-01-13 14:22:34
据我了解,
只适用于c的位置。
不是的。无论如何,您不能修改数组的位置。您可能的意思是,如果您有一个int * const,那么这确实是一个指向可修改的int的常量指针。然而,int const c[2];是一个由2个常量ints组成的数组。因此,必须在声明数组时初始化它们:
int const c[2] = {0, 1};在竞争中:
int main(void) {
int c[2];
int* const foo = c;
foo[0] = 0;
foo[0] = 1;
//foo = malloc(sizeof(int)); doesn't work, can't modify foo, as it's constant
}https://stackoverflow.com/questions/59718439
复制相似问题