定数ポインタ
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
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型のデータを指すので変更できない)
以上です。
スポンサーリンク
>> 次の記事 : 配列とポインタ・アドレスのインクリメントを確認
<< 前の記事 : ポインタとは
- - 関連記事 -
- ツリー
- 二重リンクリスト
- リンクリストの指定した箇所に要素を追加
- リンクリスト
- delete演算子
- new演算子でオブジェクト生成
- new演算子・動的メモリの割り当て
- 構造体とポインタ
- 配列のポインタ宣言
- 配列とポインタ・アドレスのインクリメントを確認
- ポインタとは
スポンサーリンク