C++数组问题

float f[a];
for(int o=0;0<a-1;o++)
{
f[o]=head->score;
if(head!=NULL)
{
head=head->next;
}
cout<<"f["<<o<<"]"<<endl;
}
请问float【】我没加a的时候是提示error C2133: 'f' : unknown size
我加了a变成float【a】就提示error C2057: expected constant expression
: error C2466: cannot allocate an array of constant size 0
: error C2133: 'f' : unknown size
请问是什么问题啊
那我怎么修改这段代码呢 ?其中A是传进来的1个数 是数组中一共多少个数 请问怎么修改

1
float[]我没加a的时候是提示error C2133: 'f' : unknown size

定义float数组的时候,如果没有初始化,必须给出数组长度,不能为空。
如果给出初始化,编译器会自动分配长度,比如
float a[]={1,3};
这是可以的,编译器自动分配数组a的长度为2,并用1和3来初始化两个成员。

2
我加了a变成float【a】就提示error C2057: expected constant expression
: error C2466: cannot allocate an array of constant size 0
: error C2133: 'f' : unknown size

定义数组长度时必须用常量(也就是编译阶段就能知道具体值的量),
比如字面值常量5、20等,
或者是#define的常量,比如
#define MAX 10
float f[MAX]; // OK
或者是const常量,比如
const int Max = 10;
float f[Max]; // OK

总之定义数组,必须让编译器知道数组的长度,这样才能分配空间。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-29
仔细看看数组定义的部分

int a[10];
int a[10] = {1,2,3};
int a[] = {1,2,3};/* 相当于 int a[3]={1,2,3}; */

数组要求在编译时就确定大小,不能用变量来定义数组大小,也不能不指定数组大小
int b=10;
int a[b]; /* ERROR */
int a[]; /* ERROR */

你给这一部分代码完全没必要定义f,直接删掉就可以。本回答被提问者和网友采纳
第2个回答  2009-02-10
float *f = (float *)malloc(sizeof(float) * a);

最后free(f);

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网