无法在我的函数中声明结构

时间:2016-03-15 23:41:02

标签: c++ arrays function structure

当我在主要功能之外定义struct时,没有问题。但是当我在main函数中定义它时,它不会编译。任何人都可以向我解释为什么或在哪里犯错误?

这有效:

struct student 
{
    char first[100];
    char last[100];
    float grade3[3];
    float ave;
};

void print_out(struct student [] );
int main(int argc, char* argv[])
{
    struct student dd;
    // ...
    print_out(&dd);
    return 0;
}

void print_out(struct student st[])
{
    // ...
}

这不是:

void print_out(struct student [] );
int main(int argc, char* argv[])
{
    //the only change here by declaring structure inside main function
    struct student 
    {
      char first[100];
      char last[100];
      float grade3[3];
      float ave;
    };
    struct student dd;
    // ...
    print_out(&dd);
    return 0;
}

void print_out(struct student st[])
{
    // ...
}

2 个答案:

答案 0 :(得分:2)

问题是范围之一。如果不起作用,您将在struct函数的范围内定义mainstruct函数之外的main根本不存在。但是,您在main函数之外的print_out函数的签名中使用它。

使用任何自定义类型时,必须在同一级别或更高级别声明该类型。

答案 1 :(得分:1)

第二个中的

struct studentmain函数之外无法看到,因为它是局部变量,只能在main内使用。