c语言基础教程 第八章 结 构.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言基础教程 8.1.1 结构和结构变t的定义 ?? 结构是一种数目固定、类型不同的若干个变量的有序的集合。结构变量是指具有某种结构类型的变量,定义结构变量之前应该先定义某种结构类型,有了这种结构类型后,再定义具有这种结构类型的结构变量、指向结构变量的指针以及结构数组等。结构数组是指数组元素为结构变量的数组。 ??? 下面是定义结构类型即结构模式的格式; ??? struct结构名)不 ??? 结构成员说明 ??? }; ??? 其中,struct是关键字。(结构名)同标识符,(结构成员说明是给出该结构模式的若干个成员,包含各个成员的名字(即变量名)和类}# o?C语言中允许出现的各种类型的变量都可以作结构成员,包含int型,float型,double型,char型变量,以及指针、数组、联合变量等。结构变量和指向结构变量的指针也可以作结构的成员,即结构定义是可以嵌套的。但是,某类结构的结构变量可以是另一类结构的结构成员,而不可是本身结构的结构变量。指向结构变量的指针可以是本身结构的成员。 ??? 例如: ??? struct card ??? { ??? int pips ??? char suit; ??? }; ??? 这是一个结构模式,其结构名是card,它有两个成员:一个是int型变量pips,另一个是字符型变量suit.该结构是用来描述一张扑克牌的,pips表示该牌的点数,而suit表示该牌的花色,其花色用字符s(黑桃), h (红桃). d(方块)c(梅花)来表示。任何一种结构模式都是对某种客观事物的抽象。 ??? 在结构模式已定义好后,可以用下述格式来定义具有某种结构模式的结构变量。 ??? Srruct结构名结构变量名表; ??? 其中,结构名是已被定义的某种结构模式,(结构变量名表)中可有若干个结构变量、指向结构变量的指针、结构数组等。它们之间用逗号分隔。例如: ??? struct card c1 .c2,*pc,cc[52]; ??? 其中,c1和c2是具有card结构模式的结构变量,pc是指向具有card结构模式的结构变量的指针,cc是结构数组名,它有52个元素,每个元素是一个具有card结构模式的结构变量。 ??? 由此可见,定义一个结构变量可以分两步,先定义好一个结构模式,再定义具有这种结构模式的结构变量。 ??? 在名写J、可以在定义结构模式后,马上定义结构变量,其格式如下: ??? StTUCI结构名 ??? 结构成员说明 ??? } ??? 结构变量名表; ??? 例如: ??? struct card ??? { ??? int ptps}; ??? char suits ??? ).c1,c2,*pc,cc[52]; ??? 这种连起来定义与前面分开定义是等价的。如果所要定义的结构变量一次性定义完,即不再出现用这种结构模式来定义新的结构变量,则可将该结构模式的结构名省略,即为无名结构。用这种结构只能一次定义所有的结构变量。例如: ??? struct ??? int pips; ??? char suit; ??? cl.c2,*pc, cc[52]; ?? 下面举例说明结构定义的嵌套,即用另一个结构的结构变量作该结构的成员。 ??? struct date ??? { ??? ins day,month,year: ??? char rnon? name[4]; ??? ); ??? struct ;student ??? { ??? char*name ??? char sex ??? int old; ??? atruct date birthday; ??? } ??? 这里有两个结构模式date和student.在date结构中,使用了char型数组作结构成员,在student结构中,使用了char型指针作结构成员,又使用结构变量birthday作结构成员。struct student Wang, Li,Zhang,其中,Wang* Li, Zhang是3个具有student结构模式的结构变量。该变量将具有student ??? 结构模式所具有的4个结构成员,其中有一个是结构变量作成员。 ??? 下面举一个指向自身结构的指针作结构成员的例子,这又是一种结构定义的嵌套。 ??? struct node ??? { ??? int ??? float b. ??? struct node*P; ??? 其中,P是指向该结构的结构变量的指针,它作为结构成员,又称指向自身结构的指针作该结构的成员。 ??? 最后指出,上面讲过的结构名、结构成员名和结构变量名是三个完全不同的概念,它们允许同名。例如: ??? street s ??? Int a; ??? char*b; ??? Char

文档评论(0)

优质文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档