2017-12-17 12 views
1

定数のダブルポインタが定数のポインタを指して定数のダブルポイントを指しているようにしたい。私は最初から(もちろん、私は本で少し検索を行うと、私はそれをGoogleで検索)それを作るとどのような次の三つメイク考え始め:私は、次のステップは、一定のダブルポインタを書くことであると思っC++のconstダブルポインタ

const double* cp; //pointer to a constant double 
double *const cp; //constant pointer 
const double *const cp; //constant pointer to a constant double 

double **const cp;// double constant pointer 

、私は最後の二つの文を組み合わせて、私はARRが動的に割り当てられたダブル次元配列である

const double *const cp = arr[0]; 
double **const cp1 = arr ; 

を書きます。 その後、私は何をしたのかを検証しようとしました。私は以下のステートメントを書いて、すべてエラーが発生すると予想していました。

**cp1 = 1; // didn't produce error 
*cp1 = arr[4]; // didn't produce error 
cp1 = new double*[5]; //produce error 

私は上で説明したことをすることができませんでした。定数のダブルポインタは、定数のポインタが定数の倍数を指していることを示します。どうしたらいいですか?

ありがとうございます。

+1

推奨読みます:https://stackoverflow.com/questions/46991224/are-there-any-valid-use-cases-新しく削除された生ポインタまたはCスタイルのアール – user0042

答えて

4

あなたがエラーを生成するために他の二つの割り当てを期待しているなぜ、私はわからないんだけど一つだけconst

double **const cp1 = arr ; 
//  ^^^^^ 

であります。

あなたはそれがすべてのレベルでconstになりたい場合は、あなたが必要

const double *const *const cp1 = arr; 
//      ^cp1 is ... 
//    ^a const pointer to ... 
//   ^a const pointer to ... 
//^a const double 
+0

ありがとう、答えだけでなく、あなたのコメントの下にあなたのコードの下にあなたの説明のためにありがとう。本でさえ、私はこの例のような説明は見つけられませんでした。 –