这段c语言有什么错误??

来源:百度知道 编辑:UC知道 时间:2024/05/23 17:48:05
struct box {
int number;
int weight;
int a;
};
int n; /*总共的箱子的个数*/
long vol; /*船的载重量*/
long sum; /*现阶段船上装的箱子的总重量*/
int i;
int j;
printf("有几个箱子?");
scanf("%d",&n);
box A[n];

我看了下,好象问题出在box A[n];这一句,去掉的话就没错了,可是到底错在哪儿???

c语言定义数组维数的时候不能用变量,可以加一个库包含#include<malloc.h>
把box A[n];
改为:box *A;
A = (box *)malloc(sizeof(box) * n));

box A[n]是你出错的根本,这样子定义是完全不和c程序的语法的,所有的数组在定义的时候其小标都应该是确定的。像下面的程序段:
int n;
int m[n];
n=5;
这是错误的定义,因为n是一个变量。至于为什么错了,那是与c语言编译的时候内存空间分配有关的,我也说不清,你以后会懂的~

box A[n]这句是什么意思?
声明结构体数组吗?
不管什么数组 都不能用变量啊 A[n]这样的格式明显是错的