c言語、配列の行数と列数を手動で入力し、2 D配列を動的に作成する


少しずつ、基礎から・・・
ポインタに配列をつけるのは、本当に頭が痛いですが、実はすべて道ですね.
ここでは、2 D配列の動的作成について説明します.
1、二次元ポインタを定義する.
2、それから1次元のアドレス空間を申請して、更に各1次元のポインタのために1行のデータ空間を申請して、そして2次元のポインタに値を割り当てます;
3、データを入力する;
4、メモリを解放します(1次元ポインタの上のものを解放してから、2次元ポインタの上のものを解放します).
直接コード:
#include  
#include 

int main()
{
	int **p; //      
	int m, n;//     
	int i, j;
	printf("please input the arry of rows and columns:");
	scanf_s("%d%d", &m, &n);
   
	if (m <= 0 || n <= 0)
		return -1; 

    //      
	p = (int **)malloc(sizeof(int *) *m);
	for (i = 0; i < m; i++)
		p[i] = (int *)malloc(sizeof(int) * n); 

    //    
	printf("please input data into this arr:");
	for (i = 0; i < m; i++)
		for (j = 0; j < n; j++)
			scanf_s("%d", &p[i][j]);

	printf("The arry has %d rows and %d columns:
", m, n); for (i = 0; i < m; i++) for (j = 0; j < n; j++) printf("%d ", p[i][j]); printf("
"); // for (i = 0; i < m; i++) free(p[i]); free(p); return 0; }