电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

(演示)计算机程序设计基础(c语言)-第7章+指针

  • 资源ID:61692733       资源大小:259KB        全文页数:33页
  • 资源格式: PPT        下载积分:20金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要20金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

(演示)计算机程序设计基础(c语言)-第7章+指针

1,第7章 指针,2,内容提要,指针的概念; 用指针做函数参数; 字符数组和字符指针 指向数组的指针与指针数组 动态内存分配函数及其应用;,3,存储器,存储器是计算机存储数据和程序的记忆单元集合 每个记忆单元由8位二进制位组成。cpu可读写其中的数据。 分外存和内存.,内存示意图,地址0F01,数据,存储容量单位:,回顾,4,内存中的每个字节都有唯一的一个地址 地址按字节编号,按类型分配空间 内存可以随机访问,只要指明要访问的内存单元的地址,就可以立即访问到该单元,内存,回顾,5,寻址方式,程序中如何读写内存中的数据? 通过变量的地址访问变量所在的存储单元(寻址) 两种寻址方式 直接寻址 通过变量名直接存取变量内容的访问方式. 间接寻址 通过指针变量来间接存取它所指向的变量的访问方式,6,为什么引入指针的概念,指针 为函数提供修改变量值的手段 为C的动态内存分配系统提供支持 为动态数据结构(如例链表、队列、二叉树等)提供支持 可以改善某些子程序的效率,7,指针的概念,指针:另一个变量的首地址 变量的指针就是变量的地址. 指针变量:一种特殊的变量,存放地址的变量,用于间接访问其他变量,8,指针变量的定义,一般形式 类型关键字 *标识符 int *p; 定义了一个指针变量p,简称指针p p是变量,int*是类型 指针变量初始化 p = *p就像普通的变量一样使用,其值是p指向的内存的内容 p可以动态(任意)地指向不同内存,从而使*p代表不同的变量,9,指针变量的定义,例 :int i,*i_pointer=,这个变量定义的语句都包含了那些内容? 变量有两个,整型变量i和i_pointer “*”:指针类型说明符,在变量定义时出现在变量名前面的 表示该i_pointer变量为指针变量 该指针变量i_pointer是指向整型变量的指针 &:取地址运算符, &i运算后得到变量i的内存的(首)地址 =:赋值运算符,赋值的结果是, 对指针变量i_pointer进行了初始化. 对指针变量i_pointer初始化的结果是,指针变量i_pointer指向变量i,10,指针变量的引用,i=3; 可以对i赋值,是直接寻址 *i_pointer=3; 可以对i赋值,是间接寻址 *:指针运算符 *i_pointer:代表指针变量i_pointer所指向的变量,11,指针变量与其它类型变量的对比,共性 在内存中占据一定大小的存储单元 先定义,后使用 特殊性 它的内容只能是地址,而不能是数据 必须初始化后才能使用,否则指向不确定的存储单元,对该空间进行访问,将可能造成危险 可参与的运算:加、减一个整数,自增、自减、关系、赋值 只能指向同一基类型的变量,12,指针变量的应用,main() int a,b; int *pointer_1,*pointer_2; a=100;b=10; pointer_1= ,13,指针变量的应用 对输入的两个数按大小顺序输出,main() int *p1,*p2,*p,a,b; scanf(“%d%d“, ,14,指针变量作为函数参数,函数的参数可以是指针变量,作用是将一个变量的地址传送到另一个函数中,指针变量做函数参数的经典例子: 两数的互换,15,编写函数实现两数的互换,void Swap(int x,int y) int temp; temp = x; x = y; y = temp; main() int a, b; a = 15; b = 8; Swap(a, b); printf(“a=%d,b=%d“,a,b); ,运行结果?,16,编写函数实现两数的互换(使用指针),void Swap(int *x,int *y) int temp; temp = *x; *x = *y; *y = temp; main() int a, b;*p1,*p2 a = 15; b = 8; p1= ,运行结果?,17,编写函数实现两数的互换(使用指针),void Swap(int *x,int *y) int temp; temp = *x; *x = *y; *y = temp; main() int a, b; a = 15; b = 8; Swap( ,运行结果?,18,数组、指针、指针变量,数组名代表数组的首地址,也就是一个指针,只是不能修改 指针也可当作数组名使用,数组元素的指针是数组元素的地址 例: int a4,*pa; pa=,19,指针算术运算,int *p, a10; p = a; p+; /*p的值增加多少?*/ 指针的加减运算是以其指向的类型的字节长度为单位的,6000 6001 6002 6003 6004 6005 6006,20,指针与一维数组的关系的示例 教材264页,设一个a数组,整型,有10个元素。用三种方法输出各元素: 1.使用数组下标 2.使用数组名 3.使用指针变量,21,指针与数组的关系示例,使用数组下标 main() int a10; int i; for(i=0; i10; i+) scanf(“%d“, ,22,使用数组名 main() int a10; int i; for(i=0; i10; i+) scanf(“%d“, ,指针与数组的关系示例,23,使用指针变量 main() int a10,*p; p=a; int i; for(i=0; i10; i+) scanf(“%d“,p+i); printf(“n“); for(i=0; i10; i+) printf(“%d“,*(p+i); ,指针与数组的关系示例,24,指针与数组的关系示例,使用指针变量 main() int a10, *p; for (p=a; p(a+10); p+) scanf(“%d“, p); for (p=a; p(a+10); p+) printf(“%d “, *p); ,去掉p=a可以吗? 为什么?,25,小结:数组元素的几种等价引用形式,数组元素的几种等价引用形式 1.下标法: ai, a3 2.指针法:通过指向数组元素的指针找到数组元素 *(a+i), *(a+3), pi,*(p+i) 说明: 如果指针变量p已经指向数组中的元素,则p+1指向同一数组中的下一个元素。(而不是将p的值简单的加1) 如果p的初值为&a0,则 p+i和a+i就是ai 的地址 *p 就是a0,*(p+5)=*(a+5)就是a5,.,*(p+i)就是ai。 ai, *(p+i), *(a+i), pi都是等效的。 不能写 a+,因为a是数组首地址是常量。,26,例7.3:从键盘输入一个班学生一门课的成绩,试用函数编程在找出最高分及其学号,教材253页 见 程序示例,27,字符串与字符数组、字符指针 教材258页,C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理 字符串 一串以'0'结尾的字符 字符数组 每个元素都是字符类型的数组 char string100; 字符指针 指向字符类型的指针 char *p; 数组和指针可以等同看待,上面三者本质上相同,28,字符指针变量与字符数组的区别,定义方法不同 char str10; char *ptr; 赋值方法不同 数组: char str10= ”china”; strcpy(str,”china”); 指针 char *ptr; ptr = ”china”;,字符指针是变量,而数组名是地址常量。,29,使用字符指针的注意事项,字符指针变量必须有明确的指向,否则使用是危险的 例如,输入字符串时 char *a; scanf(“%s“, a); /*错误*/ 应为: char *a; char str10; a = str; scanf(“%s“, a); /*正确*/,30,例7.5 :字符串拷贝,方法一:用字符数组编程 方法二:用字符指针编程,教材260页见 程序示例,31,内存空间映像,静态(全局)数据区:存放全局变量和静态变量,变量的生存期是整个程序执行期间. 堆:用动态内存分配函数申请的内存在此分配,存放动态数据。生存期由程序员决定 栈:由编译器自动分配和释放 ,存放函数的参数值,局部变量的值等。,32,动态数组的实现教材288页,动态分配内存 申请内存的函数的函数原型:在 定义 void* malloc(unsigned int size); 向系统申请大小为size的内存块,把首地址返回。如果申请不成功,返回NULL void*:一种指针类型,具有一般性,称为普通指针,void*类型的指针可以指向任意类型的变量 释放内存的函数的函数原型: void free(void* p); 释放由malloc()。p是指向此块的指针,例7.13编程输入一个班的某课程的学生成绩,计算其平均分,然后输出.班级人数由键盘输入。 教材290页 见 程序示例,33,思考题,1.指针的概念和使用. 2.指针与数组之间的关系. 3.指针做函数参数,传地址调用的使用方法. 4.动态内存分配的使用方法 . 5.习题7.1,7.2(作业),

注意事项

本文((演示)计算机程序设计基础(c语言)-第7章+指针)为本站会员(j7****6)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

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




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.