以下是動態申請a[m][n]的源代碼
代碼一:
/* 編譯器:DEV C++
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{int **a;int i,j,m,n;scanf("%d%d",&m,&n); a = (int **)malloc(sizeof(int *)*m);for (i=0;i<m; i++){a[i] = (int *)malloc(sizeof(int)*n);}for(i=0;i<m;i++){for(j=0;j<n;j++){a[i][j]=i*j+10;printf("a[%d][%d]:%d ",i,j,a[i][j]);}printf("\n"); } return 0;
}
代碼二(對代碼一進行了簡化):
/* 編譯器:DEV C++
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{int m,n;int i,j;scanf("%d%d",&m,&n);//二維數組也是線性的存儲結構 int (*a)[n]=(int(*)[n])(malloc(sizeof(int)*m*n));for(i=0;i<m;i++){for(j=0;j<n;j++){a[i][j]=i*j+10;printf("a[%d][%d]:%d ",i,j,a[i][j]);} printf("\n"); }return 0;
}
注意:
? ? ? ?不同的編譯器對語法要求的嚴格性是不一樣的,例如有的編譯器在編譯期時要求二維數組的第二維的值要是一個定值有的則沒有要求,有的編譯器則對強制轉換不怎有要求的有的則要求比較嚴,注意對不同的編譯器不同對待,“以不變應萬變”。