for的外面为什么不能定义变量?

搞不懂定义结构体变量时要在for里面定义,或者在main函数的开始时定义,不能在for的外面定义,否则不能通过编译,这是为什么?图片图片图片

因为,变量声明必须在函数或块的顶部,在执行了print后,c语言就不许可声明变量了

看下你的错误信息,按理说放外面放里面都可以。

里面外面都可以的,你把错误信息也发出来

都是可以的,并且你把结构体定义放到for里面,那么a的作用于就只能是for语句块了,这样程序跳出循环之后a就没有了。

因为你写的是C,C新标准推行的比较慢
一般声明,必须写在语句组的开头

不应该啊,应该里面外面都可以的

我测试了下,都可以编译

http://codepad.org/YSWSELL5

#include <stdio.h>

struct player
{
    int num;
};

int main()
{
    int s = 0;
    printf("*");
    struct player a[20];
    for (s = 0; s < 2; s++)
    {
        scanf("%d", &s);
        switch (s)
        {
            case 0: a[0].num = 3; break;
            case 1: a[1].num = 3; break;
            default: break;
        }
    }
    return 0;
}

http://codepad.org/5vbsexdz

 #include <stdio.h>

struct player
{
    int num;
};

int main()
{
    int s = 0;
    printf("*");
    for (s = 0; s < 2; s++)
    {
        struct player a[20];
        scanf("%d", &s);
        switch (s)
        {
            case 0: a[0].num = 3; break;
            case 1: a[1].num = 3; break;
            default: break;
        }
    }
    return 0;
}