我可以肯定的告訴你,不可能在程式執行的時候決定一個二維陣列的大小,因為陣列的大小是在編譯時就決定了的,不是在執行時,如果是一維的透過某些方法還可以辦到,二維的就不可能了,拿一維的來說:polly@nowthen:~$ cat test.c#include <stdio.h>#include <stdlib.h>struct test { int num; int arr[0];};int main(){ struct test *temp; int n = 0; scanf("%d", &n); if(n > 0) { temp = (struct test*)malloc(sizeof(struct test)+n*sizeof(int)); temp->num = n; int i = 0; for(; i<temp->num; i++) { temp->arr[i] = i; } for(i=0; i<temp->num; i++) { printf("element %d = %d\n", i, temp->arr[i]); } } return 0;}polly@nowthen:~$ gcc -Wall test.c -o liu <---編譯polly@nowthen:~$ ./liu <---執行9 <---輸入陣列維數element 0 = 0element 1 = 1element 2 = 2element 3 = 3element 4 = 4element 5 = 5element 6 = 6element 7 = 7element 8 = 8polly@nowthen:~$ 就上面的C語言標準也是不支援的,多維陣列的辦不到,一維的也儘量少用。
我可以肯定的告訴你,不可能在程式執行的時候決定一個二維陣列的大小,因為陣列的大小是在編譯時就決定了的,不是在執行時,如果是一維的透過某些方法還可以辦到,二維的就不可能了,拿一維的來說:polly@nowthen:~$ cat test.c#include <stdio.h>#include <stdlib.h>struct test { int num; int arr[0];};int main(){ struct test *temp; int n = 0; scanf("%d", &n); if(n > 0) { temp = (struct test*)malloc(sizeof(struct test)+n*sizeof(int)); temp->num = n; int i = 0; for(; i<temp->num; i++) { temp->arr[i] = i; } for(i=0; i<temp->num; i++) { printf("element %d = %d\n", i, temp->arr[i]); } } return 0;}polly@nowthen:~$ gcc -Wall test.c -o liu <---編譯polly@nowthen:~$ ./liu <---執行9 <---輸入陣列維數element 0 = 0element 1 = 1element 2 = 2element 3 = 3element 4 = 4element 5 = 5element 6 = 6element 7 = 7element 8 = 8polly@nowthen:~$ 就上面的C語言標準也是不支援的,多維陣列的辦不到,一維的也儘量少用。