课件:信息学奥赛通单元电子.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5)使用引用会使程序代码更加简洁,一般用在多重数组中。例如递推式“f[a[i][j]] = (f[a[i][j]-1] + f[a[i][j]- 2]) * a[i][j]”,可以先定义引用变量“int k = a[i][j]”,然后简化写成“f[k] = (f[k-1]+ f[k-2]) * k ”。 6)函数参数一般都是使用普通变量实现“传值”方式,也可以使用指针参数实现“传址”方式,比如数组。有了引用,就可以使用“引用参数”,使得函数中的变量名成为调用函数中的变量的别名。这种传递参数的方式叫“按引用传递”。 例4、阅读并上机调试以下程序,体会引用参数。 //p8-4-4, 交换两个变量的值 #includeiostream using namespace std; void change1(int m,int n){// 引用参数 int t = m; m = n; n = t; return; } void change2(int *m,int *n){// 指针参数 int t = *m; *m = *n; *n = t; return; } void change3(int m,int n){// 普通变量参数 int t = m; m = n; n = t; return; } int main(){ int x = 7,y = 160; change1(x,y); cout x “ “ y endl; change2(x,y); cout x “ “ y endl; change3(x,y); cout x “ “ y endl; return 0; } 例5、阅读并上机调试以下程序,体会指向结构体变量的指针。 //p8-4-5 #include iostream using namespace std; struct tstudent{ int num; char name[20]; char sex; int age; }; tstudent x = {13, ” lihao ” , ’ m ’ ,35}; tstudent *p; int main(){ p = x; cout x.num endl; cout (*p).name endl; cout p-age endl; return 0; } 【程序说明】 1)运行程序,输出: 13 Lihao 35 2)一个指向结构体变量的指针就是该变量占据的内存空间的起始地址,如图 8.4-1 所示(下一页)。 3)访问结构体成员的方法为:结构体名 . 成员名。 使用指针访问结构体成员有两种方式:结构体名 - 成员名,或者(* 指针变量名). 成员名。例如p-name,或者(*p).name,但不能写成 *。 4)如果函数的参数是一个结构体变量(按值传递),那么函数调用时就要复制整个结构体,效率不高。这种情况下,一般使用指针参数或者引用参数。 实践巩固 第 5 课 指针应用举例 学习目标 学会使用指针建立链表,并熟练应用链表结构解决一些实际问题。 线性表是一种常用的数据结构,其中的每一个元素(结点)都有唯一的前驱和唯一的后续。当然,第一个元素只有后续,最后一个元素只有前驱。 线性表一般分为“顺序表”和“链表”。顺序表可以简单理解成前面学过的数组。它是一种逻辑上和物理上都是有序的、连续存储的静态结构。链表是一种物理上不连续存储的动态结构,数据之间的逻辑顺序是通过链表中的指针链接关系实现的。 线性表 链表 链表由一系列“结点”组成,结点可以在需要时动态生成。每个结点的数据域至少包括两部分:一是存储数据元素的“数据域”;二是存储下一个结点内存地址的“指针域”。图 8.5-1 就是一个链表的示意图,其中,head 表示头结点,数据域的值为 5 的结点为尾结点,其指针域为NULL。 链表中每个结点的数据结构定义如下: struct node{ int num; node *next; }; (1)链表的建立 建立链表有“头插法”和“尾插法”两种方法,前者是把新结点插在头结点之后,后者是把新结点插在尾结点之后。本课以尾插法为例建立链表,就是不断地在链表尾部链接一个新结点。 如图 8.5-2 所示,r 为链表的尾部结点,p 为要增加的新结点,只需要把 r-next 指向 p 即可,然后把 r 再指向新的尾部。 (1)链表的建立——尾插法 (2)链表的遍历 链表的遍历就是从链表的头结点 h

文档评论(0)

iuad + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档