C++ 指向常量值的常量数组指针

C++ 指向常量值的常量数组指针,c++,arrays,constants,const-correctness,C++,Arrays,Constants,Const Correctness,如果我创建常量值的全局数组,例如 const int SOME_LIST[SOME_LIST_SIZE] = {2, 3, 5, 7, 11}; 是否可以以任何方式修改某些_列表 我如何编写它,使某些列表指向常量内存位置,并且本身是常量指针(即不能指向其他地方)?您使用的方法是正确的 此外,您不需要提供一些列表大小;C++将自动从初始化器中找出它。 < P>有3个主要的指针例子,这些例子涉及“const”关键字。(见此) 首先:声明指向常量变量的指针。指针可以移动并更改其指向的对象,但变量不能

如果我创建常量值的全局数组,例如

const int SOME_LIST[SOME_LIST_SIZE] = {2, 3, 5, 7, 11};
是否可以以任何方式修改某些_列表


我如何编写它,使某些列表指向常量内存位置,并且本身是常量指针(即不能指向其他地方)?

您使用的方法是正确的


此外,您不需要提供一些列表大小;C++将自动从初始化器中找出它。

< P>有3个主要的指针例子,这些例子涉及“const”关键字。(见此)

首先:声明指向常量变量的指针。指针可以移动并更改其指向的对象,但变量不能修改

const int* p_int;
第二:声明一个指向变量的“不可移动”指针。指针是“固定”的,但数据可以修改。必须声明并分配此指针,否则它可能会指向NULL,并在那里得到修复

int my_int = 100;
int* const constant_p_int = &my_int;
第三:声明指向常量数据的不可移动指针

const int my_constant_int = 100; (OR "int const my_constant_int = 100;")
const int* const constant_p_int = &my_constant_int;
你也可以用这个

int const * const constant_p_int = &my_constant_int;

另一个很好的参考。我希望这会有所帮助,尽管在写这篇文章的时候我意识到你的问题已经得到了回答…

一些列表
无论如何都不能被修改
一些列表
是,所以只有一个级别的常量需要担心。只是确认一下,如果我试图将它指向其他地方或记忆它,会抛出编译器错误吗?@Darthfett:是的,会。一些特别恶意的人可能会对其使用
const\u cast
,但作为一个非指针,我相当确定它正在进入未定义的行为领域。当然:数组无法重新定位,
memset
会抱怨您给它一个
const
指针。显然,您可以使用
const_cast
绕过最后一个保护,但随后进入UB land(它可能会在运行时导致崩溃)。
const int一些列表[]
在传递给函数时会衰减为
const int*
。OP不是在寻求一种方法来定义
一些列表[]
,这样它将衰减为
const int*const
?我很熟悉指针上的const用法,我不确定的只是数组。还是很好的事情要知道。:)是的,我只是最近才开始思考这个问题,所以我想我可以分享一下(: