欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    c语言第九章(苏小红版).ppt

    • 资源ID:5426491       资源大小:1.77MB        全文页数:46页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言第九章(苏小红版).ppt

    第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;,程序 1:简单变量作函数参数,例7.9未能解决的问题:两数互换,Not Work!Why?,指针为函数提供修改变量值的手段,9.1变量的内存地址,int a=0;,0 x0037b000,a,某存储区域,9.1变量的内存地址,0 x0037b000,某存储区域,0 x0037b001,0 x0037b002,0 x0037b003,&a,int a=0;,a,9.1变量的内存地址,0 x0037b000,某存储区域,0 x0037b001,0 x0037b002,0 x0037b003,&a,int a=0;,a,9.1变量的内存地址,【例9.1】使用取地址运算符&取出变量的地址,然后将其显示在屏幕上。,9.1变量的内存地址,0 x0037b000,某存储区域,0 x0037b001,0 x0037b002,0 x0037b003,&a,a,int a=0;,9.1变量的内存地址,0 x0037b000,某存储区域,0 x0037b001,0 x0037b002,0 x0037b003,间接寻址:通过存放变量地址的变量去访问变量,&a,a,int a=0;,int i;scanf(%d,i);/*这样会如何?*/char c;scanf(%d,/*这样呢?*/,i的值被当做地址。如i=100,则输入的整数就会从地址100开始写入内存,输入以int的二进制形式写到c所在的内存空间c所占内存不足以放下一个int,其后的空间也被覆盖,9.2指针变量的定义和初始化,存放变量的地址需要一种特殊类型的变量指针(Pointer)类型指针变量具有指针类型的变量变量的指针变量的地址,9.2指针变量的定义和初始化,【例9.2】使用指针变量在屏幕上显示变量的地址值,如果指针指向一个非你控制的内存空间并对该空间进行访问,将可能造成危险,9.2指针变量的定义和初始化,【例9.2】使用指针变量在屏幕上显示变量的地址值,9.2指针变量的定义和初始化,【例9.2】使用指针变量在屏幕上显示变量的地址值,9.2指针变量的定义和初始化,【例9.2】使用指针变量在屏幕上显示变量的地址值,9.2指针变量的定义和初始化,【例9.2】使用指针变量在屏幕上显示变量的地址值,9.2指针变量的定义和初始化,【例9.2】使用指针变量在屏幕上显示变量的地址值,9.3 间接寻址运算符,【例9.3】使用指针变量,通过间接寻址输出变量的值,9.3 间接寻址运算符,【例9.3】使用指针变量,通过间接寻址输出变量的值,9,普通变量作函数参数按值调用(Call by Value)Can not modify the argument 形参(Parameter)实参变量(Variable)指针作函数参数按地址调用(Call by Reference)In order to modify the argument,use:指针形参(Pointer Parameter)&(variable),9.4 按值调用与按地址调用,9.4 按值调用与按地址调用,【例9.4】演示按值调用,9.4 按值调用与按地址调用,【例9.5】演示按地址调用,9.4 按值调用与按地址调用,【例9.4】演示按值调用,【例9.5】演示按地址调用,9.4 按值调用与按地址调用,【例9.4】演示按值调用,void Swap(int*x,int*y)int temp;temp=*x;*x=*y;*y=temp;,int main()int a,b;a=5;b=9;Swap(,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,程序 2,实 参,形 参,结果有何不同?,Not Work!Why?,Trace the execution,例9.6:编写函数实现两数的互换,int main()int a,b;a=5;b=9;Swap(a,b);printf(a=%d,b=%d,a,b);return 0;,void Swap(int x,int y)int temp;temp=x;x=y;y=temp;,5,5,a,b,实 参,形 参,9,9,x,y,5,5,temp,9,x 和 y是内部变量单向值传递,例9.6:编写函数实现两数的互换,主调函数,被调函数,int main()int a,b;a=5;b=9;Swap(,void Swap(int*x,int*y)int temp;temp=*x;*x=*y;*y=temp;,&a,&a,实 参,形 参,&b,&b,x,y,5,temp,5,a,b,9,9,5,*x,*y,交换的是x 和 y指向的单元内容,主调函数,被调函数,例9.6:编写函数实现两数的互换,void Swap(int*x,int*y)int temp;temp=*x;*x=*y;*y=temp;,指针pTemp未初始化指针pTemp指向哪里未知对未知单元写操作是危险的,void Swap(int*x,int*y)int*pTemp;*pTemp=*x;*x=*y;*y=*pTemp;,永远要清楚:每个指针指向了哪里指针指向的内容是什么,void Swap(int*x,int*y)int temp;temp=*x;*x=*y;*y=temp;,指针pTemp被赋了值但交换的是地址值不是指针指向单元的内容,void Swap(int*x,int*y)int*pTemp;pTemp=x;x=y;y=pTemp;,9.5用指针变量作函数参数的程序实例,【例9.7】计算并输出最高分及相应学生的学号,【例9.7】计算并输出最高分及相应学生的学号,Not Work!Why?,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)(aj,ak)/*决定数据是否按升序排序,ab为真,则按降序排序*/int Descending(int a,int b)return a b;,9.6函数指针及其应用,指针变量与其他类型变量的对比,共性在内存中占据一定大小的存储单元先定义,后使用特殊性它的内容只能是地址必须初始化后才能使用,否则指向不确定的存储单元只能指向同一基类型的变量可参与的运算:加、减整数,自增、自减、关系、赋值使用原则明确指针指向了哪里明确指针指向单元的内容是什么永远不要使用未初始化的指针变量,Questions and answers,

    注意事项

    本文(c语言第九章(苏小红版).ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开