c语言结构体数组请问这两种定义有什么差别

typedefstruct{intID;charTitle[50];charDirector[50];charPubTime[50];charArea[50];intLo... typedef struct
{
int ID;
char Title[50];
char Director[50];
char PubTime[50];
char Area[50];
int LongTime;
char Pic[150];
}GetHotClipInfos;

GetHotClipInfos film[MAX_FILM];

typedef struct
{
int ID;
char Title[50];
char Director[50];
char PubTime[50];
char Area[50];
int LongTime;
char Pic[150];
}film[MAX_FILM];
这两种定义方法有什么区别呢。。。
是不是都可以film[i]pic这样用的。。。。。。。。。。。。
展开
 我来答
wangbwell
2011-02-28 · TA获得超过1238个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:737万
展开全部
typedef struct
{
int ID;
char Title[50];
char Director[50];
char PubTime[50];
char Area[50];
int LongTime;
char Pic[150];
}GetHotClipInfos; // 结构体类型为GetHotClipInfos 例如 GetHotClipInfos obj;
//是定义一个对象,而要定义数组则 GetHotClipInfos film[MAX_FILM];

GetHotClipInfos film[MAX_FILM];

typedef struct
{
int ID;
char Title[50];
char Director[50];
char PubTime[50];
char Area[50];
int LongTime;
char Pic[150];
}GetHotClipInfosArr[MAX_FILM]; //这里改名字 为可清晰说明问题而已
// GetHotClipInfosArr是一个数组类型
//当定义 GetHotClipInfosArr film0; 那么film0在这里是数组
//相当于用第一个:GetHotClipInfos film1[MAX_FILM];
//那么film0 和 film1是一样的 都是MAX_FILM个同样的类型
//为GetHotClipInfos的对象的数组
//都可以film0[i] .pic和film1[i] .pic这样用的

结果:是没有区别的

关键在typedef 是为现有类型创建同义字,没有出现新的类型
Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。
typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。
如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法?
使用 typedef 为现有类型创建同义字。
定义易于记忆的类型名
typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。
类型出现在所声明的变量名字中,位于 ''typedef'' 关键字右边。

想要了解更详细的情形,请参考:

参考资料: http://baike.baidu.com/view/1283800.htm

tonydelwee
2011-02-28 · TA获得超过672个赞
知道小有建树答主
回答量:395
采纳率:0%
帮助的人:409万
展开全部
第二种是错误的定义方法!!
请你告诉我你的第二种方法定义的意思!
film为一个typedef name,film[MAX_FILM]???
这不是正确的表示方法,第二种你是不是多写了个typedef啊,如果不写,就是同样的意思了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
殳孤丹019
2011-02-28 · 超过22用户采纳过TA的回答
知道答主
回答量:135
采纳率:0%
帮助的人:52.8万
展开全部
两种定义没什么区别,第一种是结构体直接定义为GetHotClipInfos,第二种是先定义结构体为film[MAX_FILM],再说明 film[MAX_FILM]就是GetHotClipInfos。 第二种用的是宏定义,修改名称的话直接在开头修改GetHotClipInfos即可。而第一种则要修改所有的GetHotClipInfos。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式