《C语言程序设计》课件第13讲-指针深入.ppt

上传人(卖家):momomo 文档编号:5787086 上传时间:2023-05-09 格式:PPT 页数:19 大小:498KB
下载 相关 举报
《C语言程序设计》课件第13讲-指针深入.ppt_第1页
第1页 / 共19页
《C语言程序设计》课件第13讲-指针深入.ppt_第2页
第2页 / 共19页
《C语言程序设计》课件第13讲-指针深入.ppt_第3页
第3页 / 共19页
《C语言程序设计》课件第13讲-指针深入.ppt_第4页
第4页 / 共19页
《C语言程序设计》课件第13讲-指针深入.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、问问 题题 引引 出出1.1.数组是连续存放的多变量数组是连续存放的多变量3.3.如果令指针指向数组开始位置,然后移动指针,就可以处理如果令指针指向数组开始位置,然后移动指针,就可以处理数组中的数据数组中的数据 2.2.数组中元素的位置可以通过下标来确定数组中元素的位置可以通过下标来确定 这就是本次课要讨论的第一部分内容:这就是本次课要讨论的第一部分内容:使用指针处理数组使用指针处理数组 4.4.数组是大小固定的数据结构,运行时不能改变数组是大小固定的数据结构,运行时不能改变 5.5.不适合数据变化频率很大的问题不适合数据变化频率很大的问题 解决数据变化频率很大的问题就要使用动态内存分配解决数

2、据变化频率很大的问题就要使用动态内存分配 主主 要要 内内 容容6.4 6.4 指针与数组指针与数组目的要求目的要求复习思考题复习思考题6.5 6.5 动态内存分配动态内存分配6.4.1 6.4.1 指针与一维数组指针与一维数组6.4.2 6.4.2 指针与二维数组指针与二维数组6.4.1 6.4.1 指针与一维数组指针与一维数组(1)(1)数组是个数固定、按顺序存放的多个变量数组是个数固定、按顺序存放的多个变量(2)(2)数组名是地址常量数组名是地址常量1.1.数组的有关知识回顾数组的有关知识回顾u方法方法1:1:数组名数组名00u方法方法2:2:*数组名数组名2.2.访问数组首元素的两种方

3、法访问数组首元素的两种方法3.3.用指针指向数组元素用指针指向数组元素(1)(1)指向首元素指向首元素方法方法1:1:指针名指针名 =数组名数组名方法方法2:2:指针名指针名 =&=&数组名数组名00(2)(2)指向任意元素指向任意元素指针名指针名 =&=&数组名数组名ii举举例例若有以下定义若有以下定义:int int a5=1,2,3,4,5;a5=1,2,3,4,5;int int*p1=a,p1=a,*p2=&a3;p2=&a3;a0a0a1a1a2a2a3a3a4a412345p1p24.4.指针算术运算指针算术运算(1)(1)指针加、减整数运算指针加、减整数运算指针指针加加或或减减

4、整数整数n n运算,是获得了当前位置运算,是获得了当前位置前方前方或或后方后方第第n n个元素的地址个元素的地址int a5=1,2,3,4,5;int a5=1,2,3,4,5;int int*p=a;p=a;则:则:p+i a+i&aip+i a+i&ai(2)(2)指针自增、自减运算指针自增、自减运算使指针使指针向前向前或或向后向后移动一个元素的位置移动一个元素的位置举举例例若有以下定义若有以下定义:int int a5=1,2,3,4,5;a5=1,2,3,4,5;int int*pa=&a2;pa=&a2;int int b5;b5;int int*pb=b;pb=b;intint

5、y;y;则单独执行下面的语句的作用是则单独执行下面的语句的作用是:6.4.2 6.4.2 指针与二维数组指针与二维数组一个二维数组一个二维数组aMNaMN可以等效成一个含行数可以等效成一个含行数(M)(M)个元素的一维数个元素的一维数组,其中每个元素又是一个含列数组,其中每个元素又是一个含列数(N)(N)个元素的一维数组个元素的一维数组1.1.二维数组的等效关系二维数组的等效关系2.2.行指针行指针(1)(1)可以在行间移动的指针叫可以在行间移动的指针叫行指针行指针(2)(2)行指针定义的格式行指针定义的格式数据类型数据类型 (*指针名指针名)行中元素个数行中元素个数;3.3.指针数组指针数组

6、(1)(1)类型为指针型的数组叫类型为指针型的数组叫指针数组指针数组(2)(2)定义格式定义格式数据类型数据类型 指针名指针名 元素个数元素个数;(3)(3)使每个元素指向一个行就转化为用指针处理一维数组的问题使每个元素指向一个行就转化为用指针处理一维数组的问题如如:intint *p3;p3;/*定义含定义含3 3个元素的指针数组个元素的指针数组p p*/6.5 6.5 动态内存分配动态内存分配1.1.两种分配空间的方法两种分配空间的方法 u静态分配静态分配:使用语句在源程序中申请使用语句在源程序中申请u动态分配动态分配:程序运行后通过库函数分配程序运行后通过库函数分配2.C2.C程序使用内

7、存情况程序使用内存情况 6.5.2 6.5.2 内存管理函数内存管理函数(1)C(1)C语言的动态内存分配由四个内存管理函数实现语言的动态内存分配由四个内存管理函数实现1.1.概述概述(2)(2)他们都包含在他们都包含在stdlib.hstdlib.h中中2.malloc2.malloc函数函数(1)(1)函数原型函数原型(2)(2)函数功能函数功能 void void*mallocmalloc(unsigned int size);(unsigned int size);n分配分配sizesize个字节的个字节的内存块内存块n返回一个指向该内存块首字节的返回一个指向该内存块首字节的voidv

8、oid型型的指针的指针(3)(3)注意事项注意事项 正常返回时为分配空间的首地址;异常返回时为空指针正常返回时为分配空间的首地址;异常返回时为空指针(NULL)(NULL)要把它赋给某种类型的指针就必须要进行要把它赋给某种类型的指针就必须要进行强制类型转换强制类型转换实参经常用实参经常用sizeofsizeof运算得出运算得出 如:如:pInt=(int pInt=(int*)malloc()malloc(sizeof(int)sizeof(int););通过检查其返回值是否为通过检查其返回值是否为NULLNULL来确定空间是否顺利分配来确定空间是否顺利分配 3.free3.free函数函数(

9、1)(1)函数原型函数原型(2)(2)函数功能函数功能 void void freefree(void(void*ptr);ptr);把由指针把由指针ptrptr指向的内存空间交还给堆指向的内存空间交还给堆 目目 的的 要要 求求1.1.掌握有关指针运算的含义掌握有关指针运算的含义2.2.掌握使用指针处理一维数组的方法掌握使用指针处理一维数组的方法3.3.理解行指针和指针数组的概念理解行指针和指针数组的概念4.4.掌握行指针和指针数组处理二维数组的方法掌握行指针和指针数组处理二维数组的方法复习思考题复习思考题说明:题目前面的说明:题目前面的*代表问题的重要程度代表问题的重要程度*2.2.指针运

10、算都有哪些指针运算都有哪些?各有什么作用各有什么作用?*3.3.如何让指针指向一维数组的首元素如何让指针指向一维数组的首元素?*1.1.解释下列名词解释下列名词*4.4.若指针指向了首元素若指针指向了首元素,则指针与元素间有什么关系则指针与元素间有什么关系?*5.5.如何定义行指针如何定义行指针?如何使用行指针处理二维数组如何使用行指针处理二维数组?*6.6.如何定义指针数组如何定义指针数组?如何使用行指针处理二维数组如何使用行指针处理二维数组?(1)(1)指针数组指针数组 (2)(2)行指针行指针 (3)(3)静态内存分配静态内存分配 (4)(4)动态内存分配动态内存分配*7.7.一个一个C C程序使用内存的情况如何程序使用内存的情况如何?*8.8.动态管理函数有哪些动态管理函数有哪些?如何使用?如何使用?

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《C语言程序设计》课件第13讲-指针深入.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|