C语言结构体可以定义在main()的{}之后吗?

找了半天书上没说.而且书上程序要么在main()之前定义,要么在main()中一定.如果可以需要申明吗?请问如何申明?哦谢啦各位大概明白了.结构体和变量一样,必须先定义后... 找了半天书上没说.而且书上程序要么在main()之前定义,要么在main()中一定.

如果可以需要申明吗?
请问如何申明?
哦 谢啦 各位 大概明白了.
结构体和变量一样,必须先定义后使用.
或者除非结构体建一个单独的文件用#include包含
展开
 我来答
zhouxw2008
推荐于2018-04-13 · TA获得超过480个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:0
展开全部
你好:

让我来解决您的困惑

(1)何谓声明?何谓定义?

声明即是告诉编译器我可能要在后面的代码中会用到这个变量后者类型,此时编译器是不为变量做内存分配的;定义即是用到声明的变量或类型并为它做内存的分配

(2)编译器从文件起始位置开始编译,它如果没有发现你做结构体的类型声明,那么当它在main()函数中碰到用这种结构体定义的变量时,它就会报错,因为它不认识这种类型

(3)什么方式:注:楼上的错了

struct s{
};

main()
{
struct s x;
}

(3)总结:所以如果你要用你定义的结构体来定义变量,则你一点要把结构体的声明放在main()之前

祝你好运!
L_o_o_n_i_e
2008-08-29 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5228万
展开全部
结构体必须先声明,再定义,然后使用。
例如:
struct x {int a; int b; int c;}; // 声明
void main()
{
struct x z; // 定义
z.a = 10; z.b = 20; z.c = 30; // 使用
...
}
----------------------------------------
如果主程序不用此结构,而是函数(子程序)用它,
这时,可以在主程序之后,但
必须在该函数之前声明,例如(完整的程序):

#include <stdio.h>
void abc();

void main()
{
abc();
}

struct s{int i;}; // 声明

void abc(){
struct s a; // 定义
a.i=3;
printf("%d",a.i); // 使用
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f7b9aa6bb
2008-08-28 · TA获得超过2250个赞
知道小有建树答主
回答量:584
采纳率:100%
帮助的人:429万
展开全部
zhouxw2008说得没错

结构体要么在main()前声明,要不就在main()里面,绝对不能在后面

结构体声明和类的声明不一样

结构体声明就要带成员列表

而struct a b;
这是才定义
定义了一个struct a类型的b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bbshliu
2008-08-28 · 超过17用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:0
展开全部
定义在main之后的话,在main函数之前就必须要声明一下
比如
struct s;

int main()
...
...

struct s
{
int i;
};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
darkwise
2008-08-28
知道答主
回答量:24
采纳率:0%
帮助的人:20.6万
展开全部
楼上的乱回答,1楼的方式是正确的。结构体和函数,可以按照1楼告诉的方式,在程序之前,预先声明一次,然后再后边补充具体内容。
建议楼主学习“预编译头文件”的概念,使用H文件来定义结构体,否则,虽然正确,但不规范
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式