2

2D配列int m [3] [4]があるとしましょう。typedefが次のように定義されている場合

typedef int array[4];
array *ptr = m;

これは何を意味するのでしょうか?4要素の配列へのポインタですか?または4つのポインタの配列?

するとcout << ptr or cout << *ptr、同じアドレスが出力されます。そんなことがあるものか?

4

3 に答える 3

0

ptrは、int型の4つの要素の配列へのポインタです。mは、(int型の4つの要素の配列の)タイプの3つの要素の配列です。あなたに絵を与えるために-mは型配列の3つの要素の配列です。これが、ptrがmに初期化される理由です。配列である「m」は、その配列の最初の要素へのポインタに暗黙的に変換されるため、問題はありません。

ptrは、要素の配列へのポインタです。そのポインタが印刷されます。また、* ptrを使用すると、配列の最初の要素へのポインターに暗黙的に変換される配列が得られます。これも同じ開始点であるため、同じ値が得られます。

すべてが同じポイントから始まるので、同じ値を取得しています。ポインタに対して++を実行すると、物事は差別化を開始します。そのままにしておきます。

于 2012-12-04T06:49:40.173 に答える
0

「時計回り/スパイラルルール」に従って、ptrは4 intの配列へのポインターです。

于 2012-12-04T11:36:05.170 に答える
0

時計回り/らせんのルールを確認してください。これを読むと、宣言が type-alias へのarrayポインター、つまり 4 つの整数の配列へのポインターであると読むことができます。

于 2012-12-04T06:58:46.030 に答える