《C语言程序设计》课件- 第11章 用户定义数据类型.ppt

《C语言程序设计》课件- 第11章 用户定义数据类型.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
struct node   { int value; struct node *ptr; }; 图11.2 三结点链 特别要说明的是结构的第二个成员prt。它是一个指向本结构node类型的指针变量。C语言规定,定义一个结构型时,其成员的类型可以是该结构型,但必须是指针,不能是普通变量。 例如,下面的定义是不合法的: ? struct node   { int value; struct node a; }; 因为a不是指针,所以是错误的。 定义三个node型的结构变量node1, node2和node3如下: ? struct node node1, node2, node3; ? 再定义一个结构型变量指针p: ? struct node *p; 为了将以上定义的这三个结构类型变量构成一个链,node1的成员ptr应存储node2的地址;node2的成员ptr应存储node3的地址;node3的成员ptr可以存储一个空地址。 下面的程序给三个结构类型变量node1,node2,node3赋值,然后,将各结构变量成员的数据输出。 程序如下: #include stdio.h main() { struct node { /* 定义结构型 */ int value; struct node *prt; }; struct node node1, node2, node3; /* 定义结构型变量 */ struct node *p; /* 定义结构型变量指针 */ p = node1; /* 给结构型变量指针赋值 */ node1.value = 1; /* 给各结点赋值 */ node1.prt = node2; node2.value = 2; node2.prt = node3; node3.value = 3; node3.prt = NULL; ? while(p!=NULL) { printf(%d %p\n, p-value,p); /* 使用结构型变量指针 */ p = p-prt; } return 0; } ? 在程序的输出语句中,对结构成员value的访问,使用了两种不同的方法:直接访问和通过结构的指针的间接访问。nodel.value为直接访问。(*nodel1.prt).value为间接访问。 程序的输出如下: 1 F F F 2     2 F F E E     3 F F E A 这些数据都表示在图11.2上。 2.结构型变量指针作为函数参数 例11.3.2 将例11.1.3改为一个以结构指针进行地址调用的函数。 在这个程序中,函数fun()的参数要改为结构型指针,由于函数参数的传递方式是地址传递,因此,将函数的类型改为void型。修改后的函数有如下的形式: void fun(struct samp1* ) { x-a++; x-b++; return; } ?定义一个指向结构型变量的指针并赋值: ? struct samp1 *p; p=y; 结构型变量的成员的引用可改为用指针引用,如:p-a或(*p).b。 程序如下: ? #include stdio.h struct samp1 /* 定义结构 */ { int a; float b; }; void fun(struct samp1* ); /* 函数原型说明 */ main() { struct samp1 *p; struct samp1 y; ? y.a = 1

文档评论(0)

卖报的小行家 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档