2018年01月14日
《その234》 const char*型 と char* const型
const char*型 と char* const型
前回《233》に、次の3つの型が出てきました。一応、違いをチェックしておきたいと思います。
(A) const char* 型
(B) char const* 型
(C) char* const 型
先ず、(A) と (B) は同じ型です。
(A) と (C) の違いは、次のプログラム,プログラム中のコメント,出力結果で確認できます。
// ------------------------------------
#include <iostream>
using namespace std;
int main() {
char a1[] = "abcdefg";
char a2[] = "uvw";
cout << "(ア) " << a1 << '\n';
// ★1 -------------------------------
const char* p = a1;
// @ 「 char* p 」の変更は×, A 「 p 」の変更は〇
// ------------------------------------
// ★2 -------------------------------
char* const q = a1;
// B 「 char* q 」の変更は〇, C 「 q 」の変更は×
// ------------------------------------
// ★1の場合
// @より、文字列を変更しようとする試み、例えば、
// p[3] = 'Z';
// は失敗します。
// Aより、ポインターの値を変更しようとする試み、
// 例えば、
p = a2; cout << "(イ) " << p << '\n';
p = "ABC"; cout << "(ウ) " << p << '\n';
// は成功します。
// ★2の場合
// Bより、文字列を変更しようとする試み、例えば、
q[3] = 'Z'; cout << "(エ) " << q << '\n';
// は成功します。
// Cより、ポインターの値を変更しようとする試み、
// 例えば、
// q = a2;
// q = "ABC";
// は失敗します。
cout << "(オ) " << a1 << '\n';
}
// ------------------------------------
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7197334
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック