C语言程序设计课件 第七章

上传人:油条 文档编号:47556497 上传时间:2018-07-02 格式:PPT 页数:34 大小:150KB
返回 下载 相关 举报
C语言程序设计课件 第七章_第1页
第1页 / 共34页
C语言程序设计课件 第七章_第2页
第2页 / 共34页
C语言程序设计课件 第七章_第3页
第3页 / 共34页
C语言程序设计课件 第七章_第4页
第4页 / 共34页
C语言程序设计课件 第七章_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《C语言程序设计课件 第七章》由会员分享,可在线阅读,更多相关《C语言程序设计课件 第七章(34页珍藏版)》请在金锄头文库上搜索。

1、本章的主要内容包括:指针指针与变量 指针与数组 指针与函数 第七章 指针 回首页内存地址:计算机内存的组织方式是把所有单元顺序排列,每个 单元有一个顺序编号,称单元的地址。形象化地叫指针 地址本身也是用二进制编码的,任何数据对象在它被使用的时候,都必 然有一个确定的存储位置,占据着确定数目的存储单元。 存储在内存的数据,最终都是根据其存储位置,通过存储单元的地址访 问的。 任何变量,在其存在期间,总有一个确定的、固定的存储位置,即固定 的地址。变量地址可能作为数据来操作。 指针变量是C语言提供的一种操作变量地址的机制。指针变量中保存的是 其它对象的地址。 通过指针变量,可以进行对有关对象的访问

2、和处理。 讨论C语言操作指针变量和普通变量的特点,什么是直接存取?什么是间 接存取? 讨论使用指针进行程序设计的好处 7.1 地址和指针的概念 7.2.1 指针的定义 1. 定义指针变量的一般形式如下:类型名 *指针变量名1,*指针变量名2,. *指针变量名n ; 2. 空指针空指针是一个特殊的指针,它的值是0,C语言中用符号常量NULL(在 stdio.h中定义)表示这个空值,并保证这个值不会是任何变量的地 址。空指针对任何指针类型赋值都是合法的。一个指针变量具有空指 针值表示当前它没有指向任何有意义的东西。3. viod指针 (void *)类型的指针叫通用指针,可以指向任何的变量,C语言

3、允许直 接把任何变量的地址作为指针赋给通用指针。 当需要使用通用指针所指的数据参加运算时,需要写出类型强制转换。 如通用指针gp所指空间的数据是整型数据,p是整型指针,用下式转 换: p=(int *)gp;7.2 指针的定义、使用和运算 7.2.2 指针的操作 1.指针赋值 (1) 取地址运算(一元运算符 调用由p指向的函数,返回值赋给c。 讨论函数指针和返回指针的函数在定义形式上的差别。 7.3.4 函数体内指针 函数体内的指针有可能通过与指针形参的赋值等操作,指向函数 体外的存储单元,因此有可能改变调用函数环境中的值 7.3函数与指针C语言数组和指针的关系极其密切。通过指针访问数组元素的

4、机制 是C语言特有的。 7.4.1一维数组和指针 7.4.1.1数组名和地址关系 数组名在C语言中被处理成一个地址常量,也就是数组所占连续存 储单元的起始地址,一旦定义,数组名永远是数组的首地址 ,在其生存期不会改变。 不能给数组名重新赋值。但可以用在数组名后加一个整数的办法 ,依次表达数组中不同元素的地址。 如 int a10; a与for (i=0;i中描述。 1. 存储分配函数malloc() void *malloc(size_t n) ; 形参类型size_t: 足够大的整数。 返回值类型(void *):通用指针,需要通过类型强制转化成特定 的指针类型。 功能:分配一块能够放下大小

5、为n的存储块,返回指向这个块的指 针,如果存储申请不能满足,返回空指针。 7.5 动态存储管理 7.5.1 C语言标准动态存储管理函数 使用动态存储分配函数应该注意以下几点: (1) 空间大小计算要使用sizeof函数进行计算; (2) 调用malloc函数后,一定要检查返回值; (3) 结果强制转换后才能赋值使用; (4) 得到的空间使用时不允许越界; 2. 带初始化的存储分配函数calloc() void calloc(size_t n, size_t size); 形参类型size_t:n元素个数;size_t size:单个元素空间大小。 返回值类型为(void *):通用指针,需要通

6、过类型强制转化成特 定的指针类型。 功能:分配一块能够放下大小为n*size的存储块,全部内容清, 返回指向这个块的指针,如果存储申请不能满足,返回空指 针。 7.5 动态存储管理 7.5.1 C语言标准动态存储管理函数 3. 动态存储释放函数free() void free(void *p); 功能:释放指针p所指的存储块。如果p的值为空,什么也不做。 调用free(q)后,p变量的指向没有改变。但不能再使用它的值。除非 重新指向新的数据单元。 程序中,应养成对不再使用的存储块立刻释放的习惯。避免造成存 储块丢失。 4. 分配调整函数realloc() void *realloc(void

7、*p, size_t n); 功能:更改前面做过的存储分配,指针p指向一个过去分配的存储 块,n表示现在希望的存储块大小,如果新的要求不能满足, 返回NULL,p仍指向原来的位置。新的分配要求可以满足, 返回新存储块的指针,内容与原来块中一样。其余部分不进 行初始化。不能再通过p指针使用原来的存储块。 7.5 动态存储管理 7.5.2 C语言标准动态存储管理函数的使用 (1) 一定要检查分配成功与否,常用下面的结构: if (p=(. *)malloc(.)=NULL ) . /* 对分配不成功的处理 */ (2) 分配空间的大小一定要用运算符sizeof来计算。 (3) 分配成功后关于存储块

8、的管理,系统完全不进行检查。 (4) 动态存储块的存在期,在其分配成功时开始,只有在用free语句 释放才能导致其存储期的结束。 7.6 指针实例- 注意下面问题 (1) 间接引用数组元素的指针出界; (2) 没有定义指针变量的初值即使用指针; (3) 错误指针赋值 (4) 错误操作 7.5 动态存储管理 第七章 指针 本章主要知识点: 指针基本概念。变量的地址和变量的值,指针变量的说明,指针变 量初始化,指针的内容,指针基本运算(取变量地址,取指针内 容,指针移动,指针比较),变量与指针的关系。 指针与函数的关系。指针作为函数的参数在函数之间传递,通过指 针改变调用函数中的变量,函数返回值为指针类型,指向函数的 指针。 指针与数组的关系。数组名与地址关系,使用指针操作数组,二维 数组下标与指针关系,函数之间传递数组的指针操作,数组指针 与指针数组的概念及两者的区别,mian函数参数。 使用指针处理字符串。关于字符串的基本规定,字符串结束标记, 使用指针操作字符串的基本算法,常用字符串库函数。 回本章首页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号