Linux 版 (精华区)
发信人: netiscpu (夜☆星光点点☆), 信区: Linux
标 题: ◇ 星星流讲座 0043
发信站: 紫 丁 香 (Sun Nov 8 18:38:19 1998), 转信
寄信人: guest.bbs@hgluo.hust.edu.cn
标 题: ◇ 星星流讲座 0043
发信站: 华南理工大学 BBS木棉站
日 期: Thu Feb 20 14
:57:00 1997
发信人: ax.bbs@bbs.ee.nthu.edu.tw. (athena), 信区: test
标 题: 星星流讲座 0043
发信站: ☆清华电机☆ (Thu Jul 20 21:56:00 1995)
;35m第 7 讲 之 1 使用者自定结构
Topic: Structuresm
现在来同各位讨论有关使用者自定结构的课题。什麽是使用者自定
结构 (structure,以下简称结构) 呢?简单的来说,它是依据使用
者的需求,由使用者自己定义的一种资料的记录 (data record)。
比方说,我们想要制作一份通讯录,那麽每一笔资料可能就包含了
姓名、地址和电话三个栏位,这个时候就可以用结构来表示:
struct record
{
char name[20];
char address[80];
char tel[20];
}; /* 注意这最後的分号 */
我们称 record 为一种结构的型式 (structure type),而它所包含
的 name、address 以及 tel 为这种结构型式的元素 (member)。
结构在 C 语言中的宣告方法很简单,就是:
struct 结构名称
{
元素1;
....
} 结构变数1, 结构变数2, ... ;
结构可以是一个或多个相同或不同资料型态变数的集合,例如:
struct single
{
int only_one; /* 这时候 single 就相当於 int */
};
struct score
{
long id; /* 学号 */
char name[20]; /* 姓名 */
float grade; /* 分数 */
} studentA, studentB, studentC;
上例中 score 这个结构是用来登载学生的成绩用的,而 studentA、
studentB 以及 studentC 就是属於 score 这种类型的结构变数。
m结构可以当做变数的资料型态0m,比方说我们如果要增加一个
studentD 的变数,这时候我们只需宣告:
struct score studentD;
就可以得到一个新的结构变数 studentD,它属於 score 这种类型。
结构变数也可以在宣告的时候直接给定初值,例如:
struct point
{
int x;
int y;
};
struct point A = { 2, 3 };
可以在宣告 A 这个结构变数时就m依序0m结定它内容里各个变数
的初值,上例中就是给定 A 这个结构变数中的 x = 2, y = 3;。很显
然地这样子给定字串的初值会有危险,这我们在前面已经提到过了。
若是我们想要单独地操作结构中的变数,像上例中 A 这个变数里的 x
那该怎麽办呢?你只要使用如:
A.x = 4;
这种型式,就可以自由地操作了。
结构里的元素也可以是其他的结构,例如:
struct circle
{
struct point center;
int radius;
} cir;
这个时候如果要取用 cir 的圆心的 x 坐标要怎麽办呢?你只需要使用
如:
cir.center.x = 4;
这种型式,就可以自由地操作了。
--
本文原作者为徐振家,原作刊载於星星神教总坛 ☆清华电机☆ test 板。
你可以以电子文件的形式将本文自由流传於台湾学术网路,但必须包含此版权声明。
原作者依中华民国著作权法之规定,享有本文之著作权,请勿抄袭以免触法。
未经授权任何人不得以任何形式对本文做任何修改及商业上之应用。
其他网路的转载或其他用途的应用,请先知会作者,并取得其同意。
对本文有任何疑问或意见请 mail 给 ax.bbs@bbs.ee.nthu.edu.tw,谢谢。
--
m;32m※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: mtlab.hit.edu.cn]
--
Enjoy Linux!
-----It's FREE!-----
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.586毫秒