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