电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

33页
  • 卖家[上传人]:j7****6
  • 文档编号:61692733
  • 上传时间:2018-12-10
  • 文档格式:PPT
  • 文档大小:259KB
  • / 33 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、1,第7章 指针,2,内容提要,指针的概念; 用指针做函数参数; 字符数组和字符指针 指向数组的指针与指针数组 动态内存分配函数及其应用;,3,存储器,存储器是计算机存储数据和程序的记忆单元集合 每个记忆单元由8位二进制位组成。cpu可读写其中的数据。 分外存和内存.,内存示意图,地址0F01,数据,存储容量单位:,回顾,4,内存中的每个字节都有唯一的一个地址 地址按字节编号,按类型分配空间 内存可以随机访问,只要指明要访问的内存单元的地址,就可以立即访问到该单元,内存,回顾,5,寻址方式,程序中如何读写内存中的数据? 通过变量的地址访问变量所在的存储单元(寻址) 两种寻址方式 直接寻址 通过变量名直接存取变量内容的访问方式. 间接寻址 通过指针变量来间接存取它所指向的变量的访问方式,6,为什么引入指针的概念,指针 为函数提供修改变量值的手段 为C的动态内存分配系统提供支持 为动态数据结构(如例链表、队列、二叉树等)提供支持 可以改善某些子程序的效率,7,指针的概念,指针:另一个变量的首地址 变量的指针就是变量的地址. 指针变量:一种特殊的变量,存放地址的变量,用于间接访问其他变量,8

      2、,指针变量的定义,一般形式 类型关键字 *标识符 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,指针变量与其它类型变量的对比

      3、,共性 在内存中占据一定大小的存储单元 先定义,后使用 特殊性 它的内容只能是地址,而不能是数据 必须初始化后才能使用,否则指向不确定的存储单元,对该空间进行访问,将可能造成危险 可参与的运算:加、减一个整数,自增、自减、关系、赋值 只能指向同一基类型的变量,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,

      4、编写函数实现两数的互换(使用指针),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个元

      5、素。用三种方法输出各元素: 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,小结:数组元素的几种等价引用形式,数组元素的几种等价引用形式

      6、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; 赋

      7、值方法不同 数组: 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分享,可在线阅读,更多相关《(演示)计算机程序设计基础(c语言)-第7章+指针》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.