- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章结构体和共用体重点讲义
第9章 结构体和共用体
9.1 结构体
【学习目标【任务】
图9-1 程序运行结果
【】#include stdio.h
main()
{ typedef struct
{int num;
char *name;
char sex;
float score;
}STU;
STU girl1, girl2,*girl3;
/*定义结构体类型*/
girl1.num=102; =lihong;
printf(请输入性别和成绩:);
scanf(%c%f,girl1.sex,girl1.score);
girl2=girl1;
/*可以为结构体类型的变量整体赋值*/
girl3=girl1;
/*可以让结构体类型的变量指向结构体类型的变量*/
printf(输出我的学号、姓名、性别、成绩的个人信息为:\n);
printf(%10d%10s %c %.2f,girl2.num,,girl2.sex,girl2.score);
printf(\n通过指针变量输出我的学号、姓名、性别、成绩的个人信息为:\n);
printf(%10d%10s %c %.2f,girl3-num,girl3-name,(*girl3).sex,(*girl3).score);
getch(); } 【】{int num;
char *name;
char sex;
float score;
}s,*p;
以上程序段是在定义结构体类型的同时定义结构体类型的变量
struct stu
{int num;
char *name;
char sex;
float score; };
struct stu s,*p;
以上程序段是先定义好结构体类型,然后再单成立一条语句定义结构体类型的变量。
struct stu
{int num;
char *name;
struct date
{ int year;
int month;
int day;}birthday;
char sex;
float score;
}s,*p;
以上程序段是结构体类型的嵌套定义,引用时分层引用,不可越层。
struct stu
{ int num;
char *name;
char sex;
float score;
}s={101,lihong,F,95.5},*p;
以上程序段是在定义结构体类型变量的同时对变量进行了初始化。
结构体类型定义时,可以用关键字typedef为定义的结构体类型变量新命一个名字,然后可以用这个新名字来定义结构类型的变量。如实例中的如下定义形式
typedef struct
{int num;
char *name;
char sex;
float score;
}STU;
STU girl1, girl2,*girl3; /*定义结构体类型变量*/
typedef还可以为其他类型起个别名,如int、char等,均可以为之起别名。如:
typedef char NAME[10];
NAME p1,p2;
相当于如下定义:
char p1[10],p2[10];
结构体成员的引用
结构体成员的引用与数组元素的引用相似,对各个成员要分别引用。结构体成员引用的运算符有“*”和“-”,引用形式如下:
结构体变量名.结构体成员
结构体变量指针-结构体成员
(*结构体变量指针).结构体成员
实例中,相对应的表达式有:
girl2.num
girl3-num
(*girl3).sex
实例46 结构体类型的数组的定义与引用——成绩统计
【任务】
图9-2 程序运行结果
【】#include stdio.h
struct birthday
{int year;
int month;
int day;};
struct student
{ char name[10];
struct birthday date;
int chinese;
文档评论(0)