回覆列表
-
1 # depma48088
-
2 # 使用者5722112564565
程式碼,實現先輸入二維陣列的行數m和列數n,並再輸入m*n個整型資料存到動態二維陣列中。最後輸出所有二維陣列的元素值。 int main() { int**p;//定義二維指標。 int m,n;//行數和列數。 int i,j; scanf("%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);//對於每個一維指標,申請一行資料的空間。 for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&p<i>[j]);//輸入第i行第j列的資料。其中&p<i>[j]也可以寫作p<i>+j或者是*(p+i)+j.功能相同。 printf("輸入的陣列為%d行%d列: ",m,n); for(i=0;i<m;i++) { for(j=0;j<n;j++)//這個迴圈可以輸出一行元素。 printf("%d",p<i>[j]);//輸出i行j列的元素。 printf(" ");//每行輸入結束加換行符。 } //釋放記憶體 for(i=0;i<m;i++) free(p<i>); free(p); return 0; }
可以按照下面步驟進行定義二維陣列並輸出:1定義二維指標。2確定陣列維數,即行數和列數。3申請行數個一維指標大小空間,並賦值給二維指標。4對於每個一維指,申請列數個元素的空間,並賦值給對應的一維指標。5輸入或賦值資料。6使用雙重迴圈,逐個範圍儲存單元並輸出。7逐個釋放一維指標上的記憶體。8釋放二維指標上的記憶體。以整型二維陣列為例:下面的程式碼,實現先輸入二維陣列的行數m和列數n,並再輸入m*n個整型資料存到動態二維陣列中。最後輸出所有二維陣列的元素值。