C++における2次元配列の使用

1370 ワード

リファレンスリンク
スペースサイズの固定配列を作成するには
# define N 16
int a[N][N];
int b[7][7]; //         。
const int n =9;
int c[n][n]; //n      
//        ,        
int c[n][n]={};
  
int c[n][n]={0};
//                0

動的2 D配列の作成
    int **p = new int *[N];//    
    for (i = 0; i < N; i++)
        p[i] = new int[N];
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
        {
            p[i][j] = 0;
            cout << p[i][j] << endl;
        }
    for (i = 0; i < N; i++) //    
        delete [] p[i];
    delete[] p;

このプロセスの考え方は、2次元配列をint*の1次元配列p[i]と見なして配列名に相当し、int*はintの1次元配列p[i][j]を指す.
vector配列の利用
#include
vector> v(3,vector(3));// vector      3*3   

2 D配列パラメータの転送
規定:2 D配列をパラメータとして関数に渡す場合は、関数のパラメータ宣言に配列の列数を指定する必要があります.配列の行数にはあまり関係がありません.指定してもいいし、指定しなくてもいいです.関数呼び出し時に渡されるポインタは、行ベクトルからなる1次元配列を指すためです.
  • void func(int array[3][10]);
  • void func(int array[][10]);
  • void func(int (* array)[10]);//10個の要素を持つ1次元配列を指すことを示します.(*array)カッコで囲まなければなりません.そうしないと、意味が変わります.
  • voidfunc(int*array[10])/配列arrayには10個の要素があり、各要素のタイプはint*
  • である.
    列数を省略すると、どの行の列を決めるかは決められません.以下に示す定義はすべて です!
  • void func(int array[][]);
  • void func(int array[3][]);