10

const値のグローバル配列を作成する場合、たとえば

const int SOME_LIST[SOME_LIST_SIZE] = {2, 3, 5, 7, 11};

SOME_LISTを何らかの方法で変更することは可能ですか?

SOME_LISTがconstメモリの場所を指し、constポインタ自体であるように(つまり、他の場所を指すことができないように)これをどのように書くことができますか?

4

2 に答える 2

18

「const」キーワードを含むポインタの主な例は3つあります。(このリンクを参照してください)

まず、定数変数へのポインターを宣言します。ポインタは移動したり、ポインタが指しているものを変更したりできますが、変数を変更することはできません。

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;

別の良い参考資料はここを参照してください。これがお役に立てば幸いですが、これを書いている間、あなたの質問はすでに答えられていることに気づきます...

于 2012-08-07T17:30:52.083 に答える
12

あなたがそれを持っている方法は正しいです。

また、提供する必要はありませんSOME_LIST_SIZE; C ++は、初期化子から自動的にそれを把握します。

于 2012-08-07T17:16:36.603 に答える