ポインタの代入における const の注意:代入により、ポインタのターゲット型から 'const' 修飾子が削除される 解決策
const と define はどちらも似たような機能を持つ記号定数を作成することができます。しかし、const は const 配列、ポインタ、const へのポインタを作成することができます。注意しなければならないのは、constは、変更する必要のないデータを読み取り専用にすることです。
#include <stdio.h>
int main (vid)
{
double rate[5] = {88.99, 100.12, 59.45, 183.11, 340.5};
const double locked[5] = {0.08, 0.075, 0.0725, 0.07};
double *pnc = rate ;
pnc = locked;
pnc = &rate[3];
return 0;
}
上記のコードではエラーが発生します。 の代入は、ポインターターゲットの型から 'const' 修飾子を破棄します。 は、その
文字通り、assignはポインタターゲット型からconst修飾子を破棄する、という意味です。実際、プログラムを見ればわかるように、ポインタpncは通常のポインタなので、ポインタが指す値を変更したり、再代入したりすることができるのです。
しかし、このポインタが指す値はconst配列であり、const double locked[ ] 配列の中の値を変更できることになり、constが変更できない(読み取り専用)ことと明らかに矛盾しています。
解決策としては、ポインタもconstにすることで、const配列lockedのアドレスをconstポインタpncに代入できるようにします。
要約すると 置けるconstデータ(locked[ ])のアドレスです。
または非固定データ(rate[ ])のアドレス
constへのポインタの初期化(const double *pnc)、または値の代入(pnc = locked; pnc = &rate[ 3] )が正しい。
通常の(constでない)ポインタにconstデータのアドレスを代入すると、コストデータは"読み取り専用"にはなりませんが
変更可能
.
関連
-
RuntimeWarning: double_scalars で無効な値が検出されましたが、正常に解決されました。
-
[例外処理1】ブートレイヤーの初期化でエラーが発生した
-
スレッド "main "での例外を伴うEclipseでのMain関数の実行をテストする java.lang.ArrayIndexOutOfBoundsException:0
-
EF: エンティティオブジェクトは、IEntityChangeTrackerの複数のインスタンスから参照することはできません。
-
ImportError: virtualenv を使用して仮想環境を作成する際に、urllib3 という名前のモジュールがないエラーが発生します。
-
は属性_TensorLikeを持たない
-
この宣言には、ストレージクラスまたはタイプ指定子がありません。この警告は何を意味するのですか?
-
Matplotlib のプロットと可視化 いくつかのプロパティとエラー
-
ベクトル添え字の範囲外問題の解の1つ
-
Eclipseオンラインインストールエラー インストールするアイテムの収集中にエラーが発生しました。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Vueはeslintrc.jsファイルを設定することで、no-trailing-spacesやno-undefなどのコンパイル時のエラーを修正することができます。
-
リソースの読み込みに失敗しました:サーバーは403(Forbidden)のステータスで応答しました。
-
ldap_bind: 無効な認証情報 (49)
-
Python 3.9 のモジュール 'time' には 'clock' という属性がありません。
-
%matplotlib インライン構文エラー
-
Pythonがエラー 'urllib' に 'urlretrieve' という属性がないとプロンプトを出す?
-
ノード名とサービス名に対する解決策が提供されていない
-
eclipseでプロジェクトを追加する すでにワークスペースに存在するため、インポートできないプロジェクトがある
-
Python Basics-TypeError: 位置引数を2つ取るが、3つ与えられている
-
エクセル関数VLOOKUPの使い方一覧、十分です!