你好:
让我来解决您的困惑
(1)何谓声明?何谓定义?
声明即是告诉编译器我可能要在后面的代码中会用到这个变量后者类型,此时编译器是不为变量做内存分配的;定义即是用到声明的变量或类型并为它做内存的分配
(2)编译器从文件起始位置开始编译,它如果没有发现你做结构体的类型声明,那么当它在main()函数中碰到用这种结构体定义的变量时,它就会报错,因为它不认识这种类型
(3)什么方式:注:楼上的错了
struct s{
};
main()
{
struct s x;
}
(3)总结:所以如果你要用你定义的结构体来定义变量,则你一点要把结构体的声明放在main()之前
祝你好运!
结构体必须先声明,再定义,然后使用。
例如:
struct x {int a; int b; int c;}; // 声明
void main()
{
struct x z; // 定义
z.a = 10; z.b = 20; z.c = 30; // 使用
...
}
----------------------------------------
如果主程序不用此结构,而是函数(子程序)用它,
这时,可以在主程序之后,但
必须在该函数之前声明,例如(完整的程序):
#include
void abc();
void main()
{
abc();
}
struct s{int i;}; // 声明
void abc(){
struct s a; // 定义
a.i=3;
printf("%d",a.i); // 使用
}
zhouxw2008说得没错
结构体要么在main()前声明,要不就在main()里面,绝对不能在后面
结构体声明和类的声明不一样
结构体声明就要带成员列表
而struct a b;
这是才定义
定义了一个struct a类型的b
定义在main之后的话,在main函数之前就必须要声明一下
比如
struct s;
int main()
...
...
struct s
{
int i;
};
楼上的乱回答,1楼的方式是正确的。结构体和函数,可以按照1楼告诉的方式,在程序之前,预先声明一次,然后再后边补充具体内容。
建议楼主学习“预编译头文件”的概念,使用H文件来定义结构体,否则,虽然正确,但不规范