- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
h第八章结构和联合
第8章 结构和联合
8.1 结构8.1.1 结构类型
由若干个成员(域)组成。
每个成员具有自身的名字和数据类型, 同一结构中的成员名不能相同。
例如, 一个学生的信息,它包括以下5项:
学号、姓名、性别、年龄、成绩
8.1.2 结构类型的定义
一般形式:
struct 结构名
{
类型1 成员名1;
类型2 成员名2;
…
类型n 成员名n;
};
说明:
(1) 结构定义描述了结构的组织形式,但在编译时并不分配存储空间。
(2) 结构的成员可以是简单变量、数组、指针、结构等。
struct date/*struct32个关键字之一*/
{ int day; char month[4]; int year; };
struct stud
{ long num;
char name[20];
char sex;
struct date birthday; 嵌套结构stud的逻辑结构
char *addr;
};
(3) 结构定义可在函数内部,也可在函数外部。
(4) 定义结构类型时,注意不能遗漏最后的分号。
8.1.3 结构变量
一、结构变量的声明
三种定义方法
1.在定义结构类型的同时声明变量。例如:
struct student
{ long num;
char name[20];
char sex;
int age;
float score;
}s1,s2,s3;
2.直接声明结构类型变量
例如:
struct
{
long num;
char name[20];
char sex;
int age;
float score;
} s1,s2,s3;/*(这里不同于前一种方法之处在于struct后面不出现结构名,故不便于在源程序中的其他地方声明新的变量)*/
3.先定义结构类型再声明变量
例如:
struct student
{
long num;
char name[20];
char sex;
int age;
float score;
};
struct student s1,s2,s3;
注意:
(1) 先定义类型再声明变量。
(2) 存储空间分配是按照各成员项的定义顺序进行的。
(3) 每个结构变量存储空间的大小是各成员项所占空间之和。例如:
sizeof( s1 )的值为31;
sizeof( struct student )的值为31;
sizeof( float )的值为4。
(4) 结构变量中的成员可单独使用。
结构变量的初始化
struct student
{ long num;
char name[20];
char sex;
int age;
float score;
}s1,s2={80101,Lilin,M‘,18};
三、结构变量的引用
形式:
结构变量名.成员名
main( )
{ struct student
{ long num; char name[20]; char sex; int age; float score;
} s1,s2={80101,Lilin,M,18};
printf( %ld\n %s\n %c\n , s2.num,s2.name,s2.sex);
s1=s2; /*结构变量还可以赋值传值*/
printf( %ld\n %s\n %c\n, s1.num,s1.name,s1.sex);
}
注意:
(1)不能将一个结构变量作为一个整体进行输入和输出。
例: scanf(%ld%s%c,s1);
printf(%ld\n %s\n %c\n,s2);
只能对各个成员分别进行输入和输出,如:
s1.num=80101;
strcpy(s1.name,Liling);
(2)结构变量可以进行整体赋值,但不能整体进行比较。 if(s1s2) printf(%s,s1.name);
(3) 如果成员本身又属一个结构类型,则要逐级地找到最低的一级成员。只能对最低级的成员进行存取。 …
8.2
文档评论(0)