C/C++定義2 D配列(行列)


1.次元定義の決定
int rows=4;
int cols=5;
int n2Arr[rows][cols];//  ,         
int n2Arr[4][5];      //  ,   4*5     
/****       *****/
int n2Arr[][ ]={
    {1,2},{3,4}};//           ,   
int n2Arr[][2]={
    {1,2},{3,4}};//  ,           

注意2点:①.2 D配列次元を定義するには、長さとして決定する必要があります.  ②. 初期化は、各1次元マトリクスの次元、すなわち列数を無視することはできません.システムは初期化構造から列数を読み取ることができず、行数は初期化に基づいて決定できるので、書き込みを無視することができます.
2.不明な次元定義
2.1 C言語定義
動的定義rows*cols 2 Dマトリクス:
#include  //malloc     

int rows=4;
int cols=5;
int** pl = (int**)malloc(sizeof(int*)*rows);//         
for(int i=0;i//      ,           
{
    pl[i]=(int*)malloc(sizeof(int)*cols);   //        
} 

for(int j=0;j//                       
    free(pl[j]);
free(pl);                                   //    rows      

動的申請空間は解放を覚えており、2回に分けて解放されます.各ローのポインタのアドレス空間を解放し、rows次元ポインタを格納する空間を解放します.
2.2 C++言語定義
int rows=4;
int cols=5;
int** n2Arr = new int* [rows];
for(int i=0;inew int[cols];

for(int j=0;jdelete[] n2Arr[j];
delete[] n2Arr; 

説明:
int* *n2Arr = new int* [rows];

new申請空間、よく理解できない場合は、申請1次元空間を参考にして理解してください.
int* n1Arr = new int[rows];

1次元配列はrows個のintタイプのサイズ空間、すなわち1次元配列の1行の空間を申請した.2 D配列は、まずrows個のintタイプを指すポインタ、すなわち1次元配列中のrows個の空間に相当し、各空間はintからintタイプを指すポインタに移行することを申請する.次に,intタイプを指すポインタが空間を指すサイズ,すなわち2次元配列の列数を決定する.次のようになります.
for(int i=0;inew int[cols];

3.関数パラメータ定義
次の例を直接見てください.
void getCount(int (*nnArr)[2],int nLen)//        
{
    for(int i=0;i<2;i++)
        cout<1][i]<//   2       
}

int main()
{
    int nnArr[][2] ={
    {
    1,2},{
    3,4}};
    getCount(nnArr,2);
}

个人の学习の记录、能力と时间が有限なため、もし间违いがあるならば読者に正してもらいます、ありがとうございます!
転載は出典を明記してください:CSDN靴の子供靴がありません