[解決済み] なぜ x[0] != x[0][0] != x[0][0] なのですか?
2022-05-03 15:35:06
質問
C++を少し勉強しているのですが、ポインターと格闘しています。宣言することで3つのレベルのポインタを持つことができることは理解しています。
int *(*x)[5];
ということで
*x
へのポインタである5つの要素からなる配列へのポインタです。
int
.
また、私は
x[0] = *(x+0);
,
x[1] = *(x+1)
といった具合に......。
では、上記の宣言があったとして、なぜ
x[0] != x[0][0] != x[0][0][0]
?
解決方法は?
x
への5つのポインタの配列へのポインタです。
int
.
x[0]
は配列
への5つのポインタの
int
.
x[0][0]
へのポインタです。
int
.
x[0][0][0]
は
int
.
x[0]
Pointer to array +------+ x[0][0][0]
x -----------------> | | Pointer to int +-------+
0x500 | 0x100| x[0][0]----------------> 0x100 | 10 |
x is a pointer to | | +-------+
an array of 5 +------+
pointers to int | | Pointer to int
0x504 | 0x222| x[0][1]----------------> 0x222
| |
+------+
| | Pointer to int
0x508 | 0x001| x[0][2]----------------> 0x001
| |
+------+
| | Pointer to int
0x50C | 0x123| x[0][3]----------------> 0x123
| |
+------+
| | Pointer to int
0x510 | 0x000| x[0][4]----------------> 0x000
| |
+------+
を見ることができます。
-
x[0]
は配列であり、式で使用されるとその最初の要素へのポインタに変換されます(例外あり)。したがってx[0]
は、その最初の要素のアドレスを与えます。x[0][0]
である0x500
. -
x[0][0]
のアドレスが含まれています。int
である。0x100
. -
x[0][0][0]
にはint
の値です。10
.
だから
x[0]
と同じです。
&x[0][0]
となるため
&x[0][0] != x[0][0]
.
したがって
x[0] != x[0][0] != x[0][0][0]
.
関連
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] template "と "typename "キーワードはどこに、なぜ入れなければならないのですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】JavaScriptで配列の要素を削除する - delete vs splice
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】デバッグアサーションに失敗しました