Ubuntu下面C语言数组的动态分配


看到《Linux C编程实战》(见  )书上67页说

  • int n = 10; 
  1. int a[n]; 

说是不正确的,然后我就检验了一下,发现竟然是正确的,在网上找了一下动态数组的分配,大部分人都是说要用指针,或者malloc进行分配。

我这里写出来是想告诉大家,书上说的不一定完全正确。下面就贴出例子来检验一下。

  1.  #include<stdio.h> 
  2.   int main() 
  3.   { 
  4.           int col,row;//代表行和列  
  5.           printf("请输入行数:"); 
  6.           scanf("%d",&col); 
  7.           printf("请输入列数:"); 
  8.           scanf("%d",&row); 
  9.           int a[col][row];//事实证明这样是可以用的,只要在声明的时候里面是有值的就可以  
  10.          int i , j ; 
  11.          for(i = 0;i < col;i++) 
  12.          { 
  13.                  for(j = 0;j < row;j++) 
  14.                 { 
  15.                          printf("请输入第%d行%d列的数:",(i+1),(j+1)); 
  16.                          scanf("%d",&a[i][j]); 
  17.                  } 
  18.          } 
  19.          printf("数组为:\n"); 
  20.          for(i = 0;i < col;i++) 
  21.          { 
  22.                  for(j = 0;j < row;j++) 
  23.                  { 
  24.                          printf("\t%d",a[i][j]); 
  25.                  } 
  26.                  printf("\n"); 
  27.          } 
  28.          return 0; 
  29.  } 

运行结果如下

  1. mars@Ubuntu:~/桌面/C$ gcc demo4_7.c -o demo4_7 
  2. mars@ubuntu:~/桌面/C$ ./demo4_7 
  3. 请输入行数:3 
  4. 请输入列数:2 
  5. 请输入第1行1列的数:1 
  6. 请输入第1行2列的数:2 
  7. 请输入第2行1列的数:3 
  8. 请输入第2行2列的数:4 
  9. 请输入第3行1列的数:5 
  10. 请输入第3行2列的数:6 
  11. 数组为: 
  12.     1   2 
  13.     3   4 
  14.     5   6 
  • 1
  • 2
  • 下一页

相关内容