C/C++定義2 D配列(行列)
4669 ワード
1.次元定義の決定
注意2点:①.2 D配列次元を定義するには、長さとして決定する必要があります. ②. 初期化は、各1次元マトリクスの次元、すなわち列数を無視することはできません.システムは初期化構造から列数を読み取ることができず、行数は初期化に基づいて決定できるので、書き込みを無視することができます.
2.不明な次元定義
2.1 C言語定義
動的定義rows*cols 2 Dマトリクス:
動的申請空間は解放を覚えており、2回に分けて解放されます.各ローのポインタのアドレス空間を解放し、rows次元ポインタを格納する空間を解放します.
2.2 C++言語定義
説明:
new申請空間、よく理解できない場合は、申請1次元空間を参考にして理解してください.
1次元配列はrows個のintタイプのサイズ空間、すなわち1次元配列の1行の空間を申請した.2 D配列は、まずrows個のintタイプを指すポインタ、すなわち1次元配列中のrows個の空間に相当し、各空間はintからintタイプを指すポインタに移行することを申請する.次に,intタイプを指すポインタが空間を指すサイズ,すなわち2次元配列の列数を決定する.次のようになります.
3.関数パラメータ定義
次の例を直接見てください.
个人の学习の记录、能力と时间が有限なため、もし间违いがあるならば読者に正してもらいます、ありがとうございます!
転載は出典を明記してください:CSDN靴の子供靴がありません
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靴の子供靴がありません