在定义并
说明变量 boy1 和 boy2 时,其中的成员 birthday 被说明为 data 结构类型。成员名可与程
序中其它变量同名,互不干扰。
11.3 结构变量成员的表示方法
在程序中使用结构变量时,往往不把它作为一个整体来使用。在 ANSI C 中除了允许具有
相同类型的结构变量相互赋值以外,一般对结构变量的使用,包括赋值、输入、输出、运算
等都是通过结构变量的成员来实现的。
表示结构变量成员的一般形式是:
结构变量名.成员名
例如:
boy1.num 即第一个人的学号
boy2.sex 即第二个人的性别
如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。
例如:
boy1.birthday.month
即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。
11.4 结构变量的赋值
结构变量的赋值就是给各成员赋值。可用输入语句或赋值语句来完成。
【例 11.1】给结构变量赋值并输出其值。
main()
{
struct stu
{
int num;
char *name;
char sex;
float score;
} boy1,boy2;
boy1.num=102;
boy1.name="Zhang ping";
printf("input sex and score
");
scanf("%c %f",&boy1.sex,&boy1.score);
boy2=boy1;
printf("Number=%d
Name=%s
",boy2.num,boy2.name);
printf("Sex=%c
Score=%f
",boy2.sex,boy2.score);
}
本程序中用赋值语句给 num 和 name 两个成员赋值,name 是一个字符串指针变量。用 scanf
函数动态地输入 sex 和 score 成员值,然后把 boy1 的所有成员的值整体赋予 boy2。最后分
别输出 boy2 的各个成员值。本例表示了结构变量的赋值、输入和输出的方法。
11.5 结构变量的初始化
和其他类型变量一样,对结构变量可以在定义时进行初始化赋值。
【例 11.2】对结构变量初始化。
main()
{
struct stu /*定义结构*/
{
int num;
char *name;
char sex;
float score;
}boy2,boy1={102,"Zhang ping","M",78.5};
boy2=boy1;
printf("Number=%d
Name=%s
",boy2.num,boy2.name);
printf("Sex=%c
Score=%f
",boy2.sex,boy2.score);
}
本例中,boy2,boy1 均被定义为外部结构变量,并对 boy1 作了初始化赋值。在 main 函
数中,把 boy1 的值整体赋予 boy2,然后用两个 printf 语句输出 boy2 各成员的值。
11.6 结构数组的定义
数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都
是具有相同结构类型的下标结构变量。在实际应用中,经常用结构数组来表示具有相同数据
结构的一个群体。如一个班的学生档案,一个车间职工的工资表等。
方法和结构变量相似,只需说明它为数组类型即可。
例如:
struct stu
{
int num;
char *name;
char sex;
float score;
}boy[5];
定义了一个结构数组 boy,共有 5 个元素,boy[0]~boy[4]。每个数组元素都具有 struct
stu 的结构形式。对结构数组可以作初始化赋值。
例如:
struct stu
{
int num;
char *name;
char sex;
float score;
}boy[5]={
{101,"Li ping","M",45},
{102,"Zhang ping","M",62.5},
{103,"He fang","F",92.5},
{104,"Cheng ling","F",87},
{105,"Wang ming","M",58};
}
当对全部元素作初始化赋值时,也可不给出数组长度。
【例 11.3】计算学生的平均成绩和不及格的人数。
struct stu
{
int num;
char *name;
char sex;
float score;
}boy[5]={
{101,"Li ping","M",45},
{102,"Zhang ping","M",62.5},
{103,"He fang","F",92.5},
{104,"Cheng ling","F",87},
{105,"Wang ming","M",58},
};
main()
{
int i,c=0;
float ave,s=0;
for(i=0;i<5;i++)
{
s+=boy[i].score;
if(boy[i].score<60) c+=1;
}
printf("s=%f
",s);
ave=s/5;
printf("average=%f
count=%d
",ave,c);
}
本例程序中定义了一个外部结构数组 boy,共 5 个元素,并作了初始化赋值。在 main 函
数中用 for 语句逐个累加各元素的 score 成员值存于 s 之中,如 score 的值小于 60(不及格)
即计数器 C 加 1,循环完毕后计算平均成绩,并输出全班总分,平均分及不及格人数。
【例 11.4】建立同学通讯录
#include"stdio.h"
#define NUM 3
struct mem
{
char name[20];
char phone[10];
};
main()
{
struct mem man[NUM];
int i;
for(i=0;i {
printf("input name:
");
gets(man[i].name);
printf("input phone:
");
gets(man[i].phone);
}
printf("name phone
");
for(i=0;i printf("%s %s
",man[i].name,man[i].phone);
}
本程序中定义了一个结构 mem,它有两个成员 name 和 phone 用来表示姓名和电话号码。
在主函数中定义 man 为具有 mem 类型的结构数组。在 for 语句中,用 gets 函数分别输入各
个元素中两个成员的值。然后又在 for 语句中用 printf 语句输出各元素中两个成员值。
11.7 结构指针变量的说明和使用
11.7.1 指向结构变量的指针
一个指针变量当用来指向一个结构变量时,称之为结构指针变量。
小说推荐
- 星卡设计师:开局设计火伊布
- 苏洛花8700万拍下了限量青眼白龙卡牌,遭到了全网嘲讽,没想到,竟然真的召唤出了青眼白龙 这是个类似女武神的世界观,神族以圣战的方式,决定人族的去留 所谓圣战,便是在人类中挑选出九名最强星卡师,与诸神中的九位主神展开对决,若是人类能赢五场,便让人族延续千年 于是青眼白龙从各个星球中挑选有天赋的星卡师
- 玄幻小说箫锦鲤连载中
- 最新章:新书发了
- 亲爱的,你被我设计了!
- 作者所写的《亲爱的,你被我设计了》无弹窗免费全文阅读为转载作品,章节由网友发布
- 都市言情未知连载中
- 最新章:page 32
- 乌龙设计师
- 因为身边没有亲人,袁婉绿早就学会独立自主,也养成了凡事自己来、从不依靠别人的习惯!没想到这个才见第二次面的室内设计师,居然会这么关心她,不但陪着她到医院就诊,而且还因为担心她会发烧、家里没人照料,主动表示愿意让她到他家借住…天底下怎么会有这么好心的人啊?真是令人感动—见鬼了!她只是在向他道谢而已,他
- 都市言情未知连载中
- 最新章:第18章
- 亲爱的你被我设计了
- 原来我被他们联合起来设计了,正在我似梦非梦无法从惊奇中清醒过来时,只听到罗斌在耳边悄悄问:亲爱的,你喜不喜欢我的设计 作者:雨醉霜浓所写的《亲爱的你被我设计了》无弹窗免费全文阅读为转载作品,章节由网友发布
- 都市言情雨醉霜浓完本
- 最新章:尾声
- 人生设计在童年
- 人生设计在童年作者[美]高燕定广西师范大学出版社出版 序言 新东方教育集团文化研究院院长徐小平 我是在2003年5月底在美国休斯敦见到高燕定先生的。我去休斯敦看望一个多年不见的老友。朋友说有一个高燕定先生,在教育方面很有见地,希望我们能够见面认识 见到高燕定先生,真使我有相见恨晚之感。高先生在20世
- 现代文学未知连载中
- 最新章:第67章
- 冒牌设计师
- 新书《傲临都市》已经上传,望新老朋友多多支持,新书要冲个小榜,求收藏,求推荐 拜谢!新书书号3127811 作者:吾爱杨所写的《冒牌设计师》无弹窗免费全文阅读为转载作品,章节由网友发布
- 穿越架空吾爱杨完本
- 最新章:第二六零章 成就!黄粱一梦?(大结局)
- 王牌设计师
- 新书:神灵纪。书号:1365414【起点第二编辑组荣誉出品】他,天资平庸,然而一夜之间拥有王牌设计师的头脑,任何设计都难不倒他.建筑设计 服装设计?广告设计?这些通通都是小菜!但是他却有着一个改不过来的毛病,那就是一旦扯上和女人沾边的事儿,就会犯傻.比如说,有美女脱光衣服送上门来,他也不知道下手…群
- 都市言情爱上云的风完本
- 最新章:想说的话以及关于新书
- 超人气设计
- 《超人气设计》作者:沈娆(VIP手打完结)_TXT下载她只是个小裁缝的女儿,异能不多不少,刚够实现她的梦想,偶然的机遇让她闯进了光怪陆离五彩斑斓的时尚圈,成为一名新晋时装设计师。生存在白天鹅群中,她如何才能破茧成蝶,一飞冲天 作者:所写的《超人气设计》无弹窗免费全文阅读为转载作品,章节由网友发布
- 都市言情未知连载中
- 最新章:第125章
- 命运设计师
- [都市异能《命运设计师》作者:独爱金秋【第一部完结】一个想救出父母的少年,无意间拯救了世界~一面魂镜,控制无数人的命运。一位总师,设计着所有人的蓝图。你的命运其实早就被安排好了,不管你如何改变,都是我想让你改变的,某设计师如是说。第一卷:幻境奇缘第一章:魂镜之母上 公元前221年,秦始皇率军占领齐国
- 玄幻小说未知连载中
- 最新章:第141章