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

C++ 无法在我的函数中声明结构,c++,arrays,function,structure,C++,Arrays,Function,Structure,当我在主函数之外定义一个struct时,没有问题。但是,当我在主函数中定义它时,它不会编译。谁能向我解释一下我的错误在哪里 这项工作: 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 s

当我在主函数之外定义一个
struct
时,没有问题。但是,当我在主函数中定义它时,它不会编译。谁能向我解释一下我的错误在哪里

这项工作:

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[])
{
    // ...
}

问题在于范围。如果不起作用,则在
main
函数的范围内定义
struct
struct
main
函数之外根本不存在。但是,您在
主功能
之外,在
打印输出
功能的签名中使用它


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

struct student
在第二个类型中,无法在
main
函数外部看到,因为它是一个局部变量,只能在
main

n
m
struct name
。还有。如果不能很快修复,我将回滚。在发布代码之前,请使用编译器检查行为。外部定义是一个全局结构,内部成为自动存储,无法在线初始化(但可以使用单个成员分配)。如果要执行此操作,请在其前面加上静态存储限定符。@ArifBurhan这是false;在块作用域中定义的结构对象仍可初始化。您可能正在考虑可变长度数组,这些数组可能未初始化。(这不是VLA,因为
m
was
#将
定义为文字)你可以试试很棒的,我不知道。现在一切都很好,除了不起作用的例子!但这是因为没有定义
print\u out
。我想我应该把它完全放回去。