- 1、本文档共37页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言第7章
第7章 用户自定义数据类型 7.1 结 构 体 7.1.1 结构体类型及其定义 具体的形式如下: struct 结构体名 { 类型名1 成员名1; 类型名2 成员名2; …… 类型名n 成员名n; }; 7.1.2 结构体变量的定义与引用 1.先定义结构体,再说明结构体变量 struct student { int no; char name[20]; char sex; float score; }; struct student stu1,stu2; 这段程序说明了两个变量stu1和stu2为结构体类型。 2. 在定义结构体类型的同时说明结构体变量 同构造数组类型一样,可以在定义类型的同时定义变量,即将格式改为: struct 结构体名 { 成员项列表 }变量名列表; 3. 直接说明结构变量 struct { int no; char name[20]; char sex; float score; } stu1,stu2; 第3种方法与第2种方法的区别在于,第3种方法中省去了结构体名,而直接给出结构体变量。 结构体类型变量成员的引用形式: 变量名.成员名 (*指针变量名).成员名 指针变量名-成员名 需要说明的是,后两个表示形式只在指针变量指向结构体类型变量时才可用。例如,stu1.num 即第1个人的学号,stu2.sex 即第2个人的性别。如果成员本身又是一个结构体,则必须逐级找到最低级的成员才能使用。例如,stu1.birthday.month即第1个人出生的月份,可以在程序中单独使用,与普通变量完全相同。 定义结构体变量当然是为了在程序中引用,但引用时,需要注意以下几点: (1)不能将结构体变量作为一个整体输入和输出。例如,已定义了stu1和stu2为结构体变量并且它们已有值,出现下面的引用是不正确的: printf(%d,%c,%c,%f\n,stu1); (2)可以将一个结构体变量作为一个整体赋给另一个具有相同类型的结构体变量。例如: struct student stu1={10020,Chen Xia,女, 98}; struct student stu2; stu2=stu1; (3)如果成员本身又属于一个结构体类型,而结构体中只能对最低级的成员进行赋值或存取以及运算,所以要用若干成员运算,一级一级地找到最低级的成员进行运算。 (4)结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。 7.1.3 结构体数组 定义一个结构体数组有两种方法。 1.先定义结构体再定义数组 struct student { char name[9]; int no; int age; int score; }; struct student stu1[30]={{Li Xia,21001,18,98}, {Chen Fei,21002,17, 86}…{Zhao Wei,21030,19,79}}; 上述语句表示定义了结构体数组stu1,数组中含有30个元素,每个元素都是struct student这种结构体类型,并且定义数组的同时给其所有成员赋了初值。 2. 在定义结构的同时定义数组 struct stu { char name[9]; int no; int age; int score; }stu1[30],stu2[20]; 和基本类型的数组一样,对于结构体类型的一维数组、二维数组,也可以定义指向它们的指针变量。 结构体数组元素和基本类型的数组元素一样,也是通过数组名和下标来引用的,不同的是其类型是结构体类型。因此,对结构体数组元素的引用与对结构体变量的引用一样,也是逐级引用,只能对最低级的成员进行存取和运算。 一般的引用形式: 数组名[下标].成员名 7.1.4 结构体类型的指针 使用一个指针变量指向一个结构体变量时, 该指针变量称为结构体指针变量。 结构体指针变量中的值是所指向的结构体变量的首地址。通过结构体指针即可访问该结构体变量,这与数组指针和函数指针的情况是相同的。 结构体指针变量说明的一般形式为: struct 结构体名 *结构体指针变量名; 结构体类型和结构体变量是两个不同的概念,不能混淆。结构体类型只能表示一个结构体形式,编译系统并不对它分配内存空间。 只有当某变量被说明为这种类型的结构体时,才对该变量分配存储空间。因此,上面stu这种写法是错误的,不可能去取一个结构体名的首地址。有了结构体指针变量,就能更方便地访问结构体变量的各个成员。 其访问的一般形式为: (*结构体指针变量).成员名 7.2 共 用
文档评论(0)