为什么我不能初始化我的数组?

时间:2011-11-28 04:14:56

标签: c arrays for-loop

我所要做的就是将我的数组初始化为C中的所有0,但是我的编译器一直给我错误(并且错误没有帮助)。该数组有24个条目,值是浮点值。

main()
{

/* Array of users arrival & departure time */
float user_queue[24];

/* Initialize queue to 0 */
int i;
for(i = 0; i < 24; i++)
{
    user_queue[i] = 0.0;
}

/* Simulation time */
float time = 0;

编译器在“浮动时间”行上给出了一个错误。如果我删除for循环,错误就会消失。

  

语法错误:缺失;在类型之前

5 个答案:

答案 0 :(得分:4)

在使用表达式后,可能不允许声明变量。尝试将time的声明移到顶部:

main()
{

/* Array of users arrival & departure time */
float time, user_queue[24];

/* Initialize queue to 0 */
int i;
for(i = 0; i < 24; i++)
{
    user_queue[i] = 0.0;
}

/* Simulation time */
time = 0;

答案 1 :(得分:3)

你用1个元素超越了数组。试试这个:

for(i = 0; i < 24; i++)

<=更改为<

编辑:有了新信息。

您可能正在使用C89 / 90或ANSI C模式进行编译。在那些较旧的C版本中,变量声明必须位于函数或范围的开头。你不能将声明和代码混合在一起。

试试这个:

main()
{

    /* Array of users arrival & departure time */
    float user_queue[24];

    float time;  /* Declare up here */

    /* Initialize queue to 0 */
    int i;
    for(i = 0; i < 24; i++)
    {
        user_queue[i] = 0.0;
    }

    /* Simulation time */
    time = 0;

答案 2 :(得分:3)

为此你甚至不需要循环:

/* Array of 24 users */
float user_queue[24] = { 0.0 }; 

这将在没有for循环的情况下将数组初始化为全零。

答案 3 :(得分:2)

<,而不是<=,因此:

for( i = 0; i < 24; i++ )

创建这样的数组时:

float user_queue[24]

您正在创建一个包含24个元素的数组,编号为0到23。

关于更新的代码,float time = 0;需要在main(){.....}块的开头。在C99之前的C(除了一些实现之外)并没有让你声明变量,除了它们的封闭范围/块的开头。

答案 4 :(得分:0)

这样做:

float user_queue[24] = {0};