- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计 Lec 6 指针 引言 目前的知识不能解决的问题 动态存储管理 通过return语句返回多个数据 对函数参数按值传递的补充 一些复杂数据结构的实现 链表 树 图 地址与指针 数据对象在生存期间都有存储位置,占据一定数量的存储单元 存储位置就是内存地址 存储单元的内容就是数据对象的值 地址与指针 如果把地址值也当作一种数据,存储地址值的变量就是指针变量,简称指针 地址与指针 指针就是内存地址 指针没有类型,但指针指向的对象具有类型[注] 无论指针变量指向什么类型的变量,指针自身只占据4个字节的内存单元 地址与指针 指针的相关操作 指针赋值:将程序对象的地址存入指针变量 间接访问:通过指针变量存储的地址访问该地址对应的对象 主要内容 6.1 指针变量的定义和使用 6.2 指针作为函数参数 6.3 指针与数组 6.4 指针与字符串 6.4 动态存储管理 6.1 指针变量的定义和使用 定义指针变量 格式: 目标数据对象类型: 指针指向的数据对象的类型,用于确定指针指向的对象占据多少存储单元 指针变量名称: 任何合法标识符 指针变量赋值 将程序对象的地址存入指针变量,通过取地址运算符可取得程序对象的地址 指针变量赋值 间接访问 访问指针指向的对象 访问方法:* 指针变量 间接访问 间接访问的过程 step1. 通过指针的值(地址)找到对应的内存单元 step2. 通过指针的类型,确定数据占据多少内存单元 step3. 将找到的内存单元内存储的数据按照指针的类型转换为相应数据 6.2 指针作为函数参数 函数调用时实参按值传递 如果参数传递的值是变量地址 指针作为函数参数示例 用一个函数实现两个整数除法,要求返回整除的商和余数 用return语句不能返回两个值 用参数返回值,参数必须是指针形式 6.3 指针与数组 数组在内存中的实现 数组名是一个内存地址,称为数组首地址 数组元素从首地址开始连续存放 访问数组元素的方法:数组名[下标] 指向数组元素的指针 数组元素是一个普通变量,具有唯一地址 与数组同类型的指针变量可以指向数组的任一元素 指针运算 1.指针和数值n(变量、常量)的加减法 前提:指针变量指向数组中的某个元素 意义:表示将指针向前或向后移动n个元素 指针运算 2.两个指针变量相减 前提:两个指针变量指向同一个数组 意义:得到两个指针之间的元素个数 指针运算 3.两个指针变量比较大小 前提:两个指针变量指向同一个数组 意义:得到两个指针之间的位置关系 指针运算 4. 对指针变量使用下标 前提:指针变量指向数组 意义:得到对应数组元素 访问数组元素的几种模式 数组参数与指针 数组作为函数形式参数时,实际是以指针的形式实现 数组参数与指针 6.4 指针与字符串 6.5 动态内存管理 动态空间管理 数据利用内存空间的几种情况 静态空间:静态变量所用的空间,在编译时分配;生存期:应用程序运行的整个期间; 自动空间:自动变量所用的空间,在运行到定义该变量所在的块时分配,但在编译时即已确定大小;生存期:从定义处开始到块结束处为止; 动态空间(自由空间):动态数据所用的空间,用malloc函数申请时分配;生存期:从申请时开始,直到free函数释放时为止。 动态变量的创建 如何表示下面的数据? “从键盘输入任意多个数,然后对它们进行排序。” 可用动态变量表示上面的数据。C语言通过调用标准库“stdlib.h”中的库函数malloc来创建动态变量。 库函数malloc: void *malloc(unsigned int size); 函数malloc在程序的堆区分配一块大小为size的内存空间,并返回该内存空间的首地址,其类型为void *。如果该空间用于存储某个具体类型的数据,则需对返回值类型进行强制转换。例如: int *p,*q; p = (int *)malloc(sizeof(int)); //创建了一个int型动态变量,p指向之。 q = (int *)malloc(sizeof(int)*10); //创建了一个动态数组变量,q指向其第一个元素。 动态变量没有名字,对动态变量的访问需要通过指向动态变量的指针变量来进行(间接访问)。例如: ...*p... //访问上面创建的int型动态变量 ...*(q+3)... //或...q[3]...,访问上面创建的动态数组中的第4个元素 动态变量的撤消 在C程序运行期间,动态变量不会自动消亡。要撤消(使之消亡)某个动态变量,则需用标准库函数free来实现。 void free(void *p) //释放p所指向的内存空间 例如: int *p,*q; p = (int *)malloc(sizeof(int)); q = (int *)mallo
您可能关注的文档
最近下载
- 广东省暴雨径流查算图表使用手册.pdf VIP
- 山西吕梁离石贾家沟煤业有限公司岗位职责汇编.doc VIP
- 东营市华凌科技办公楼的设计.doc VIP
- 2023年高考物理试卷(广东)含答案解析.docx VIP
- 2022-2023学年部编版高中语文必修上册2.2《红烛 》教学实录.docx VIP
- 消防安全知识灭火器使用培训教程PPT模板(完整版).pptx VIP
- 燃料采购供货方案,燃油运输方案.docx
- 第2课 树立科学的世界观 课件 中职思想政治高教版哲学与文化.pptx
- 《燃气涡轮发动机》课件.ppt VIP
- 中小学【新教材】2024年秋沪教牛津版英语七年级上册 Unit 1 Section4 课件教育教学资.pptx VIP
文档评论(0)