看到《Linux C編程實戰》(見 http://www.linuxidc.com/Linux/2011-01/31315.htm )書上67頁說
- int a[n];
說是不正確的,然後我就檢驗了一下,發現竟然是正確的,在網上找了一下動態數組的分配,大部分人都是說要用指針,或者malloc進行分配。
我這裡寫出來是想告訴大家,書上說的不一定完全正確。下面就貼出例子來檢驗一下。
- #include<stdio.h>
- int main()
- {
- int col,row;//代表行和列
- printf("請輸入行數:");
- scanf("%d",&col);
- printf("請輸入列數:");
- scanf("%d",&row);
- int a[col][row];//事實證明這樣是可以用的,只要在聲明的時候裡面是有值的就可以
- int i , j ;
- for(i = 0;i < col;i++)
- {
- for(j = 0;j < row;j++)
- {
- printf("請輸入第%d行%d列的數:",(i+1),(j+1));
- scanf("%d",&a[i][j]);
- }
- }
- printf("數組為:\n");
- for(i = 0;i < col;i++)
- {
- for(j = 0;j < row;j++)
- {
- printf("\t%d",a[i][j]);
- }
- printf("\n");
- }
- return 0;
- }
運行結果如下
- mars@Ubuntu:~/桌面/C$ gcc demo4_7.c -o demo4_7
- mars@ubuntu:~/桌面/C$ ./demo4_7
- 請輸入行數:3
- 請輸入列數:2
- 請輸入第1行1列的數:1
- 請輸入第1行2列的數:2
- 請輸入第2行1列的數:3
- 請輸入第2行2列的數:4
- 請輸入第3行1列的數:5
- 請輸入第3行2列的數:6
- 數組為:
- 1 2
- 3 4
- 5 6