苏小红C语言设计第9章.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【例9.7】计算并输出最高分及相应学生的学号 9.5用指针变量作函数参数的程序实例 9.5用指针变量作函数参数的程序实例 【例9.7】计算并输出最高分及相应学生的学号 真正的原因:普通变量作函数参数按值调用 不能在被调函数中改变相应的实参值 9.5用指针变量作函数参数的程序实例 【例9.7】计算并输出最高分及相应学生的学号 9.5用指针变量作函数参数的程序实例 【例9.7】计算并输出最高分及相应学生的学号 9.6函数指针及其应用 函数指针(Function Pointers)就是指向函数的指针(Pointer to a Function) 指向函数的指针变量存储的是函数在内存中的入口地址 编译器将不带()的函数名解释为该函数的入口地址 数据类型 (* 指针名)(); 例如:int (*p)(); 常见错误: 忘记了前一个(),写成 int *p(); /*声明一个函数名为p、返回值是整型指针的函数*/ 忘掉了后一个(),写成 int (*p); /*定义了一个整型指针*/ 定义时后一个括号内的参数类型与指向的函数参数类型不匹配 应用 编写通用性更强的函数 典型实例1 计算函数的定积分 典型实例2 既能按照升序排序,又能按照降序排序 9.6函数指针及其应用 【例9.8】修改例8.8中的排序函数,使其既能实现对学生成绩的升序排序,又能实现对学生成绩的降序排序 先不使用函数指针编程 9.6函数指针及其应用 9.6函数指针及其应用 9.6函数指针及其应用 【例9.9】修改例9.8中的程序实例,用函数指针编程实现一个通用的排序函数,对学生成绩既能实现升序排序,又能实现降序排序 使用函数指针编程 9.6函数指针及其应用 9.6函数指针及其应用 9.6函数指针及其应用 void SelectionSort(int a[], int n, int (*compare)(int a, int b)) { …… if ((*compare)(a[j], a[k])) …… } /*决定数据是否按升序排序,ab为真,则按升序排序*/ int Ascending(int a, int b) { return a b; } /*决定数据是否按降序排序,ab为真,则按降序排序*/ int Descending(int a, int b) { return a b; } 9.6函数指针及其应用 指针变量与其他类型变量的对比 共性 在内存中占据一定大小的存储单元 先定义,后使用 特殊性 它的内容只能是地址 必须初始化后才能使用,否则指向不确定的存储单元 只能指向同一基类型的变量 可参与的运算:加、减整数,自增、自减、关系、赋值 使用原则 明确指针指向了哪里 明确指针指向单元的内容是什么 永远不要使用未初始化的指针变量 Questions and answers A pointer is a variable whose value is a memory address representing the location of the chunk of memory on either the run-time stack or on the heap. * */46 第9章 指针 哈尔滨工业大学 计算机科学与技术学院 苏小红 sxh@hit.edu.cn 本章学习内容 ? 指针数据类型 ? 指针变量的定义和初始化 ? 取地址运算符,间接寻址运算符 ? 按值调用与按地址调用,指针变量作函数 参数 ? 函数指针 void Swap(int x,int y) { int temp; temp = x; x = y; y = temp; } int main() { int a, b; a = 5; b = 9; Swap(a, b); printf(a=%d,b=%d,a,b); return 0; } 程序 1:简单变量作函数参数 例7.9未能解决的问题:两数互换 void Swap(int *x,int *y) { int temp; temp = *x; *x = *y; *y = temp; } int main() { int a, b; a = 5; b = 9; Swap( a, b ); printf(a=%d,b=%d,a,b); return 0; } 程序 2:指针变量作函数参数 指针为函数提供修改变量值的手段 9.1变量的内存地址 变量的地址(Address) 变量名

文档评论(0)

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

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

1亿VIP精品文档

相关文档