- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C结构体应用全攻略
C结构体应用全攻略——入门、进阶、提高、扩展
在学习结构体之前,你会很自然的想到使用如下的变量来描述:
name, height, weight, strong, modfile。
好了,现在来给Kula和K分别进行描述,你就需要在变量名上加以区分。对于Kula你有了
Kula_name, Kula_height, Kula_weight, Kula_strong, Kula_modfile
对于K,你有了
K_name, K_height, K_weight, K_strong, K_modfile
好,设想你现在要制作KOF2003了,我们需要一个函数根据这些信息在战斗中评价两位选手,这个函数看上去像是这样
int value(char *name, int height, int weight, int strong, char *modfile);
当然在实际测试中一个人物的信息可能不止这几个,也许他有30个之多,我相信你是不会写一个有30个参数的函数的(除非你为Microsoft工作)。更糟糕的是,如果由于版本更新发现30个参数里有15个是多余的,在修改了函数定义之后,你还要修改无数的不只位置函数调用。汗!
现在,结构体来救你了(e文:the struct comes to rescue)。看看如何用结构体定义一个拳皇人物吧。首先我们定义一个结构体类型:
struct FIGHTER {
char *name; /*元素1*/
int height; /*元素2*/
int weight; /*元素3*/
int strong; /*元素4*/
char *modfile; /*元素5*/
};
这个类型叫FIGHTER,他和你用的int在语法上是一样,他们都是类型。正如你使用int声明变量一样,你可以用FIGHTER声明变量。FIGHTER有一些比int特殊的地方,他是结构体。所以声明变量时,你给跟TC提这件事(在FIGHTER前加上struct关键词)。声明变量的方法如下:
struct FIGHTER Kula, K, Iori, Athena;
好了,你定义了很多FIGHTER变量。那么如何使用他们呢。对于设置一个人物我们可以这样:
Kula.height = 1.65;
Kula.weight = 49;
Kula.strong = 75;
这里,height,weight,strong是Kula内的元素。这就好像同一规格的不同书包一样。Kula是这种规格书包的一种,而height,weight,strong就是书包里袋子的名称。自然书包K里height袋子和书包Kula里height袋子是两个完全独立的袋子,他们互不干扰。
你注意到了Kula和height之间有一个点,专业一点的称呼叫 成员运算符(member operator)。当然我还是叫她点。
现在回到value函数的问题,我们不再需要那么多参数了。我们只要
int value(struct FIGHTER fighter);
这样,在评价Kula的时候我们使用的是value(Kula)而不是什么value(Kula_height, Kula_weight, ......, 汗!);
一定会发现结构对于描述一样带有很多属性的东西有天生的优越性。比如
struct POINT {
int x;
int y;
};
struct RECT {
int left;
int top;
int bottom;
int right;
};
.....
使用结构体编程可以让你尽快熟悉OOP(面向对象程序设计)。
不过,...嘻嘻,你没觉得每次在声明结构体时的语法中有个struct在前面很不爽
struct RECT rt;
我想让他像声明int型一样简单,打个RECT rt就行了那多好。于是你就打了一个
RECT r
文档评论(0)