Ubutun菜鸟,再用gcc学c程序编写,因为听说对c99支持较好,编译后发现_Bool类型、原型声明方面的确可以,但照C Primier Plus上面的一个例子编写了含有VLA的一个程序运行不了!高手来看看有办法解决吗?
下面是代码。
#include <stdio.h>
#define ROWS 3
#define COLS 4
int sum2d (int rows, int cols, int ar[rows][cols]);
int main (void)
{
int i,j;
int rs = 3;
int cs = 10;
int junk[ROWS][COLS] =
{ {2,4,6,8}, {3,5,7,9}, {12,10,8,6} };
int morejunk[ROWS-1][COLS+2] =
{ {20,30,40,50,60}, {5,6,7,8,9,10} };
int varr[rs][cs];
for (i=0; i<rs; i++)
for (j=0; j<cs; j++)
varr[i][j] = i*j+j;
printf ("3x4 array\n");
printf ("Sum of all elements: %d.\n",sum2d (ROWS, COLS, junk));
printf ("2x6 array\n");
printf ("Sum of all elements: %d.\n",sum2d (ROWS-1, COLS+2, morejunk));
printf ("3x10 VLA\n");
printf ("Sum of all elements: %d.\n",sum2d (rs, cs, varr));
return 0;
}
int sum2d (int rows, int cols, int ar[rows][cols])
{
int a,b;
int sum=0;
for (a=0;a<rows;a++)
for (b=0;b<cols;b++)
sum += ar[a][b];
return sum;
}
下面是代码。
#include <stdio.h>
#define ROWS 3
#define COLS 4
int sum2d (int rows, int cols, int ar[rows][cols]);
int main (void)
{
int i,j;
int rs = 3;
int cs = 10;
int junk[ROWS][COLS] =
{ {2,4,6,8}, {3,5,7,9}, {12,10,8,6} };
int morejunk[ROWS-1][COLS+2] =
{ {20,30,40,50,60}, {5,6,7,8,9,10} };
int varr[rs][cs];
for (i=0; i<rs; i++)
for (j=0; j<cs; j++)
varr[i][j] = i*j+j;
printf ("3x4 array\n");
printf ("Sum of all elements: %d.\n",sum2d (ROWS, COLS, junk));
printf ("2x6 array\n");
printf ("Sum of all elements: %d.\n",sum2d (ROWS-1, COLS+2, morejunk));
printf ("3x10 VLA\n");
printf ("Sum of all elements: %d.\n",sum2d (rs, cs, varr));
return 0;
}
int sum2d (int rows, int cols, int ar[rows][cols])
{
int a,b;
int sum=0;
for (a=0;a<rows;a++)
for (b=0;b<cols;b++)
sum += ar[a][b];
return sum;
}