GeeksforGeeksの違い
int const*
int const*は定数integerへのポインタです
これは、宣言されている変数が定数integerを指すポインタであることを意味します。 事実上、これはポインタが変更すべきではない値を指していることを意味します。 Const修飾子はこのシナリオではポインタに影響を与えないので、ポインタは他のアドレスを指すことができます。
最初のconstキーワードはデータ型のどちらかの側に行くことができるため、int const*はconst int*と同等です。
int*const
int*constはintegerへの定数ポインタです
これは、宣言されている変数が整数を指す定数ポインタであることを意味します。 事実上、これはポインタが他のアドレスを指してはならないことを意味します。 Const修飾子は、このシナリオではintegerの値に影響を与えないため、アドレスに格納されている値を変更することができます。
const int*const
const int*constは定数整数への定数ポインタです
これは、宣言されている変数が定数整数を指す定数ポインタであることを意味します。 事実上、これは定数ポインタが定数値を指していることを意味します。 したがって、ポインタは新しいアドレスを指すべきではなく、指される値は変更されるべきではありません。
最初のconstキーワードはデータ型のどちらかの側に行くことができるため、const int*constはint const*constと同等です。
メモリマップ
構文を覚えておく1つの方法(Bjarne Stroustrupによる)は、スパイラルルールです-
ルールは、変数の名前から開始し、次のポインタまたは型に時計回りに 式が終了するまで繰り返します。
ルールは構文を右から左にデコードするものと見なすこともできます。
,
- int const*はconstへのポインタですint
- int*constはconstへのポインタですint
- int const*constはconstへのポインタですint
このルールを使用すると、複雑な宣言でも次のようにデコー,
- int constはintへのポインタへのconstポインタです。
- int*const*は、intへのconstポインタへのポインタです。
- int const**は、const intへのポインタへのポインタです。
- int*const*constは、intへのconstポインタへのconstポインタです。
注目の読者! 今の学習を停止しないでください。 学生に優しい価格でC++FoundationとSTLコースですべての重要なC++FoundationとSTLの概念を手に入れ、業界の準備ができています。