中国高校课件下载中心 》 教学资源 》 大学文库

中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第06章 指针

文档信息
资源类别:文库
文档格式:PPT
文档页数:79
文件大小:2.95MB
团购合买:点击进入团购
内容简介
中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第06章 指针
刷新页面文档预览

第六章指针 §数组可以存放并处理一批同类型的数据,但数组的长度 在定义是在定义时必须给出,并且以后不能改变,也就 是说不能实现内存的动态分配,如果处理的这一批数据 个数是不确定的,就要定义足够大的空间,这样就会造 成存储空间的浪费。 §为此需要利用指针来实现内存的动态分配。 C程序设计中使用指针可以: ●使程序简洁、紧凑、高效 ●有效地表示复杂的数据结构 ●动态分配内存 ●得到多于一个的逐数返回值

第六章 指针 §数组可以存放并处理一批同类型的数据,但数组的长度 在定义是在定义时必须给出,并且以后不能改变,也就 是说不能实现内存的动态分配,如果处理的这一批数据 个数是不确定的,就要定义足够大的空间,这样就会造 成存储空间的浪费。 §为此需要利用指针来实现内存的动态分配。 C程序设计中使用指针可以: ⚫使程序简洁、紧凑、高效 ⚫有效地表示复杂的数据结构 ⚫动态分配内存 ⚫得到多于一个的函数返回值

案例介绍 §在实际问题中,有许多问题需要指针处理,如: (1)输入5个国家名称,对其排序并输出。 (2)定义一个函数,交换两个变量的值,要求把交换后 的结果返回。 §案例分析: >问题(1)中5个国家的名称为5个字苻串,一般是不等长的, 如果定义一个二维字符数组来存放并处理这5个字符串,会 出现两种问题:第一,定义的二维字符数组的第二维的长 度应该以名称最长的国家名为准,这样就会造成存储空间 的浪费;第二,在排序过程中,要不断交换字符串的存储 位置,就会影响程序的执行效率。为了解决以上问题,需 选择指针处理。 >间题(2)中定义的函数,用return语句只能返回一个值,如果 要返回多个值,只能借助指针对要交换值的变量的存储空 间进行访问

案例介绍 §在实际问题中,有许多问题需要指针处理,如: (1)输入5个国家名称,对其排序并输出。 (2)定义一个函数,交换两个变量的值,要求把交换后 的结果返回。 §案例分析: ➢ 问题(1)中5个国家的名称为5个字符串,一般是不等长的, 如果定义一个二维字符数组来存放并处理这5个字符串,会 出现两种问题:第一,定义的二维字符数组的第二维的长 度应该以名称最长的国家名为准,这样就会造成存储空间 的浪费;第二,在排序过程中,要不断交换字符串的存储 位置,就会影响程序的执行效率。为了解决以上问题,需 选择指针处理。 ➢ 间题(2)中定义的函数,用return语句只能返回一个值,如果 要返回多个值,只能借助指针对要交换值的变量的存储空 间进行访问

§6.1指针的概念 一、变量与地址 内存中每个字节有一个编号地址 内存 程序中: int i; : Q000 2001 float k; Q002 编译或函数调用时为其分配内存单元 2003 变量所在的内存单元的第 2005 一个字节的地址为该变量 的地址。 变量是对程序中 数据存储空间的抽象

§6.1 指针的概念 一、变量与地址 程序中: int i; float k; 内存中每个字节有一个编号-地址 . . 2000 2001 2002 2005 内存 0 2003 i k 编译或函数调用时为其分配内存单元 变量所在的内存单元的第 一个字节的地址为该变量 的地址。变量是对程序中 数据存储空间的抽象

地址与指针 >内存单元的编号也叫做地址 寄存箱 密码箱 保险箱 1000 2008 >变量的地址就称为变量的指针 p A 》变量的指针和变量的内容是两个不同的概念。 案例:寻找保险箱密码问题中,先找到存放密码箱地 址的寄存箱P,从中取出密码箱A地址,根据该地址找到密码 箱A,最后到密码A中取密码。在这里,寄存箱P中的1000就 是密码箱A的指针,2008是密码箱A的内容。 >在C语言中,允许用一个变量来存放指针,这种存放地址 的变量称为指针变量。因此,一个指针变量的值就是某个 内存单元的地址,也可以称为某内存单元的指针。 >一个指针是一个地址,是一个常量。而一个指针变量却可 以被赋予不同的指针值,是变量,指针变量简称指针。 >定义指针变量的目的是为了通过指针去访问内存单元

地址与指针 ➢ 内存单元的编号也叫做地址 ➢ 变量的地址就称为变量的指针 ➢ 变量的指针和变量的内容是两个不同的概念。 案例:寻找保险箱密码问题中,先找到存放密码箱地 址的寄存箱P,从中取出密码箱A地址,根据该地址找到密码 箱A,最后到密码A中取密码。在这里,寄存箱P中的1000就 是密码箱A的指针,2008是密码箱A的内容。 ➢ 在C语言中,允许用一个变量来存放指针,这种存放地址 的变量称为指针变量。因此,一个指针变量的值就是某个 内存单元的地址,也可以称为某内存单元的指针。 ➢ 一个指针是一个地址,是一个常量。而一个指针变量却可 以被赋予不同的指针值,是变量,指针变量简称指针。 ➢ 定义指针变量的目的是为了通过指针去访问内存单元

在程序中通过变量名引用变量的值,如: printf(“%d”,x); 输出变量x的值,程序执行时是将变量x翻译成 它所在的内存地址并把地址中的内容输出。这种使 用变量的方法叫直接访问。 C语言中还有一种操作变量的方法:通过变量 的地址来操作变量。这种使用变量的方法叫间接访 问

在程序中通过变量名引用变量的值,如: printf(“%d”,x); 输出变量x的值,程序执行时是将变量x翻译成 它所在的内存地址并把地址中的内容输出。这种使 用变量的方法叫直接访问。 C语言中还有一种操作变量的方法:通过变量 的地址来操作变量。这种使用变量的方法叫间接访 问

二、指针与指针变量 指针:一个变量的地址(常量) ?指针变量:专门存放变量地址的变量叫指针变量 指针 2000 整型变量 2001 10 变量的地址 变量的内容 2002 2003 指针变量 2004 ←一变量i pointer 2005 -2000 指婴量 变量地址(指针) 指向 地址存入 变量 指针变量 变量值

. . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 二、指针与指针变量 ❖指针:一个变量的地址(常量) ❖指针变量:专门存放变量地址的变量叫指针变量 2000 指针 指针变量 变量的地址 变量的内容 指针变量 变量 变量地址(指针) 变量值 指向 地址存入 指针变量

三、&与*运算符 必含义 含义:取变量盒义:取指针所指向变具的内容 单目运算秀量香毯算符 1 pointer *i pointer 优先级:必理獬先级:2 10 结合性自 &i pointer 2000 i : 2000 整型变量 2001 10 i pointer =&i=&(*i pointer) 2002 1 *i pointer *(&i) 2003 2004 ←一变量i pointer 2005 .-2000 指针变量 2006 i pointer 指针变量,它的内容是地址量 *i pointer- 指针的目标变量,它的内容是数据 &i pointer- 指针变量占用内存的地址

三、&与*运算符 ❖含义 含义: 取变量的地址 单目运算符 优先级: 2 结合性:自右向左 含义: 取指针所指向变量的内容 单目运算符 优先级: 2 结合性:自右向左 ❖两者关系:互为逆运算 ❖理解 . . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 指针变量 i_pointer-指针变量,它的内容是地址量 *i_pointer-指针的目标变量,它的内容是数据 &i_pointer-指针变量占用内存的地址 2000 10 i_pointer *i_pointer &i_pointer i i_pointer &i &(*i_pointer) i *i_pointer *(&i) i_pointer = &i = &(*i_pointer) i = *i_pointer = *(&i)

四、直接访问与间接访问 ★直接访问:用变量名存取变量值 ★间接访问:通过存放变量地址的变量去访问变量 例 i=3; 直接访问 2000 整型变量i 2001 204 2002 2003 2004 ←一变量i pointer=&i 2005 2000 指针变量 2006 例 *i pointer=20; -间接访问

四、直接访问与间接访问 直接访问:用变量名存取变量值 间接访问:通过存放变量地址的变量去访问变量 例 i=3; -直接访问 指针变量 . . 2000 2004 2006 2005 整型变量i 10 变量i_pointer=&i 2001 2002 2003 2000 3 例 *i_pointer=20; -间接访问 20

例 k=i; 一直接访问 k=*i pointer; 间接访问 2000 整型变量i 2001 10 2002 ←一整型变量k 2003 2004 ←一变量i pointer 2005 2000 指针变量 2006

指针变量 . . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 整型变量k 例 k=i; -直接访问 k=*i_pointer; -间接访问 10 例 k=i; k=*i_pointer;

§6.2指针变量 指针变量具有一般变量的三要 一、指针变量的定义 素:名字、类型、值 一般形式: 「存储类型1 数据类型*指针名; 例 int *pl,*ps 指针 指婴量州表示定义指针变量 float 共型 卡识符 statie cha环复afe, 运算符 注意: l、int*pl,*p,与int*pl,p; 2、指针变量名是pl,p,不是*pl,*p; 3、指针变量只能指向定义时所规定类型的变量; 4、指针变量定义后,变量值不确定,应用前必须先赋值; 5、一个指针变量只能指向同类型的变量

§6.2 指针变量 一、指针变量的定义 ❖一般形式: [存储类型] 数据类型 *指针名; 指针变量本身的存储类型 指针变量所指向的变量的数据类型 表示定义指针变量 合法标识符 不是‘*’运算符 例 int *p1,*p; float *q ; static char *name; 注意: 1、int *p1,*p; 与 int *p1,p; 2、指针变量名是p1,p ,不是*p1,*p; 3、指针变量只能指向定义时所规定类型的变量; 4、指针变量定义后,变量值不确定,应用前必须先赋值; 5、一个指针变量只能指向同类型的变量。 指针变量具有一般变量的三要 素:名字、类型、值

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档