当我在主要功能之外定义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[])
{
// ...
}
答案 0 :(得分:2)
问题是范围之一。如果不起作用,您将在struct
函数的范围内定义main
。 struct
函数之外的main
根本不存在。但是,您在main
函数之外的print_out
函数的签名中使用它。
使用任何自定义类型时,必须在同一级别或更高级别声明该类型。
答案 1 :(得分:1)
struct student
在main
函数之外无法看到,因为它是局部变量,只能在main
内使用。