[解決済み] const char* と char const* - これらは同じものですか?
2023-06-08 02:18:42
質問
私の理解では
const
修飾子は右から左に読まれるべきです。そこから、なるほどと思いました。
const char*
はcharの要素を変更できないポインタですが、ポインタ自体は変更可能であり
char const*
への定数ポインタです。
mutable
の文字です。
しかし、以下のようなコードに対して、以下のようなエラーが発生します。
const char* x = new char[20];
x = new char[30]; //this works, as expected
x[0] = 'a'; //gives an error as expected
char const* y = new char[20];
y = new char[20]; //this works, although the pointer should be const (right?)
y[0] = 'a'; //this doesn't although I expect it to work
で...どっちなんでしょう?私の理解やコンパイラ(VS 2005)が間違っているのでしょうか?
どのように解決するのですか?
実は、規格によると
const
は要素を直接
その左
. の使用は
const
を使うのは、単に便利なショートカットです。 ですから、次の2つの文は等価です。
char const * pointerToConstantContent1;
const char * pointerToConstantContent2;
ポインタ自体が変更されないようにするために
const
をアスタリスクの後に配置する必要があります。
char * const constantPointerToMutableContent;
ポインタとそれが指すコンテンツの両方を保護するために、2つのconstを使用します。
char const * const constantPointerToConstantContent;
私が個人的に採用している 常に を採用し、変更しない予定の部分の後に const を置くことで、ポインタが一定に保ちたい部分であっても一貫性を保つようにしています。
関連
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] std::string を const char* または char* に変換する方法
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] constexpr` と `const` の相違点
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】'cout'は型名ではない
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない