a=(int**)malloc(sizeof(int*)*r) 首先,這句話的意思就是使用malloc申請sizeof(int*)*r這麼大的記憶體空間。 其次,因為mallo的返回值是void*型別,所以要進行一個型別轉換,你可以轉換成任何的型別。 最後,因為你要輸出一個3*5的矩陣,所以如果直接定義的話,應該定義為inta[3][5],而這個a就是int**型別,所以你使用malloc分配記憶體值,要將malloc的記憶體型別格式化為int**型別。 int**p; inta[3][5]; p=a;//可以這樣賦值的。 輸出一個3*5數列的例子 #include?<stdio.h> #include?<stdlib.h> int?main() { ????int**?a?=?(int**)malloc(sizeof(int*)*3); int?i=0,?j=0; for?(i=0;?i<3;?i++) { a[i]?=?(int*)malloc(sizeof(int)*5); for?(j=0;?j<5;?j++) { *(*(a+i)+j)=j; } } for?(i=0;?i<3;?i++) { for?(j=0;?j<5;?j++) { printf("%d\t",?*(*(a+i)+j)); } printf("\n"); } delete[]?a; ????return?0; }
a=(int**)malloc(sizeof(int*)*r) 首先,這句話的意思就是使用malloc申請sizeof(int*)*r這麼大的記憶體空間。 其次,因為mallo的返回值是void*型別,所以要進行一個型別轉換,你可以轉換成任何的型別。 最後,因為你要輸出一個3*5的矩陣,所以如果直接定義的話,應該定義為inta[3][5],而這個a就是int**型別,所以你使用malloc分配記憶體值,要將malloc的記憶體型別格式化為int**型別。 int**p; inta[3][5]; p=a;//可以這樣賦值的。 輸出一個3*5數列的例子 #include?<stdio.h> #include?<stdlib.h> int?main() { ????int**?a?=?(int**)malloc(sizeof(int*)*3); int?i=0,?j=0; for?(i=0;?i<3;?i++) { a[i]?=?(int*)malloc(sizeof(int)*5); for?(j=0;?j<5;?j++) { *(*(a+i)+j)=j; } } for?(i=0;?i<3;?i++) { for?(j=0;?j<5;?j++) { printf("%d\t",?*(*(a+i)+j)); } printf("\n"); } delete[]?a; ????return?0; }