2 D配列のいくつかの表現方法


/*名称:2次元配列のいくつかの表示方法説明:よく使われる2次元配列の表示方法は以下の通りです:(1)、1つ目は普通の2次元配列の表示方法です.(2)、2つ目は1次元配列で2次元配列を表す.表示される要素アドレスから分かるように、2次元配列と1次元配列で表される2次元配列はメモリに格納される方式は同じであるが、2次元配列を用いることはアドレス変換を行わない限り簡単に見える.(3)、3つ目はポインタ配列で表される.この例のc[i]の要素は実はアドレスです.この方法は各要素の大きさが異なる場合に適している.例えば、a[i][j]構造を使用する場合、jはこれらの文字列長の最大値を取らなければならないと仮定すると、この方法は空間を浪費することは明らかである.*a[i]構造を採用すると、aには各文字列のヘッダアドレスのみが格納され、シリアル自体ではないため、スペースが節約されるだけでなく、シリアルを直接操作する時間が短縮される.(4)、第4の態様は、ポインタを指す変数で表される.この態様pは、ポインタを指すポインタであり、通常の2次元配列のヘッダアドレス(本例のa)を付与することはできない.(aはポインタを指すポインタではないため).第3の態様の配列ポインタのヘッダアドレスを付与することができる.この態様は、少ない.
*/
#include
using namespace std;

int main()
{
    int a[3][3] = {{0,1,2},{3,4,5},{6,7,8}};
    int b[9] = {0,1,2,3,4,5,6,7,8};
    int *c[3];
    int **p;

    cout<<"        "<for(int i = 0;i<3;++i)
    {
        for(int j = 0;j<3;++j)
          {
            cout<"("<")"<<" ";   //かっこの は  する  のアドレスです
//cout<
}
cout<cout<「  の1      」<for(int i=0;i<3;++i)
{
for(int j = 0;j<3;++j)
{
cout<3+j]<<"("<3+j]<<")"<<" ";
}
cout<cout<「ポインタ    :」<for(int i=0;i<3;++i)
{
c[i] = *(a+i);      //c[i]a  を すi  ヘッダアドレス
for(int j = 0;j<3;++j)
{
cout<"("<")"<<" ";
}
cout<cout<「ポインタ    」<//pはポインタを すポインタであり、ポインタ  cをポインタ  pに  する
for(int i = 0;i<3;++i)
{
for(int j = 0;j<3;++j)
{
cout<"("<")"<<" ";
}
cout<return 0;
}