定数ポインタ

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

定数のポインタを宣言する場合、すこし難しいです。

スポンサーリンク

定数宣言

まずは、定数の宣言を考えます。

const int data = 5;
data = 10;    // dataは定数なので、変更は許可されな

では、ポインタを定数で宣言する場合を見てみます。

const char *data_ptr = "abc";

この場合、ポインタdata_ptrがポイントしているデータ(すなわち*data_ptr)が、定数として宣言されることになります。
したがって、ポインタdata_ptrは変更可能ですが、それが指すデータ*data_ptrは、定数なので変更不可能となります。

data_ptr = "def";    // 許可される
*data_ptr = "Tom";    // 許可されない(*data_ptrは定数)

このやり方では、ポインタdata_ptrは定数にはなりません。

ポインタを定数にするには

ポインタを定数にするには、constキーワードを*の後に入れます。

char *const data_ptr = "Ben";    // ポインタdata_ptrが定数となる

上の書き方は、以下のようになっていましたから、違いを確認。

const char *data_ptr = "abc";

「char *const data_ptr = “Ben”; 」と、constを*の後に書くことで、ポインタdata_ptrを定数とすることができます。

data_ptr = "def";    // 許可されない(ポインタdata_ptrは定数)
*data_ptr = "Tom";    // 許可される(*data_ptrはchar型のデータを指すので変更できる)

定数のデータをポイントする定数のポインタ

「定数のデータをポイントする定数のポインタ」、すなわち「変更できないデータをポイントする、変更できないポインタ」を宣言するには、以下のように書きます。

const char *const data_ptr = "Ben";
data_ptr = "def";    // 許可されない(ポインタdata_ptrは定数)
*data_ptr = "Tom";    // 許可されない(*data_ptrは定数のchar型のデータを指すので変更できない)

以上です。

スポンサーリンク
 
スポンサーリンク