C语言10-Pointers课件.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言10-Pointers课件

指针 吴清锋 2007年秋 提纲 地址与指针 简单的指针变量 指针变量作为函数参数 指针与数组 指针与一维数组 指针与多维数组 指针与字符串 指针与函数 void指针类型 运算符小结 地址与指针(1) 内存单元的地址与内容的区别 程序中处理的数据在内存中要占用一定的存储单元。要访问某个存储单元要使用该单元的内存地址。 在程序中使用变量名来直接对数据进行访问。在程序中定义了一个变量,在编译时就给这个变量分配了内存单元。 地址与指针(2) 直接访问与间接访问 按变量地址直接存取变量值的方法称为“直接访问”。“直接”体现在,对值的访问依赖于自身! 程序经过编译后已经将变量名转换为变量的地址 存、取等操作的例子(P219) 在C中,我们可以定义一种特殊的变量。这种变量的内容是其他变量所对应的内存单元地址。这样我们就可以先由前一个变量的值得到后一个变量的地址,然后通过该地址取得所需要的变量值。这就是所谓的“间接访问”。 地址与指针(3) 指针与指针变量 在“间接访问”中,我们可以使这种特殊的变量“指向”其他变量所对应的存储单元。这种指向是通过地址来体现的。所以地址被称为指针。例 专门用来存放其他变量地址的变量被称为指针变量。例 指向 初学者一定要把”指向”当作是指针的一个操作,若有语句: i_pointer=i; 简单的指针变量(1) 定义一个指针变量 定义的一般形式:基类型 * 指针变量 这样的定义说明该变量的类型是指针类型,指向类型为“基类型”的变量。 *既不属于基类型也不属于变量。 在定义指针变量时必须指定基类型。 例子P221:注意,定义形式,*的含义,变量名到底是哪个,指向什么类型的变量或是用来存放什么类型变量的指针 取地址运算符() 功能:取得变量的地址。 该运算符与++、--等运算符的优先级和结合性都相同。 指向关系的建立 用赋值语句使一个指针变量得到另一个变量的地址 简单的指针变量(2) 指针运算符(*) 也称“间接访问”运算符,若p为指针变量,*p就是p所指的存储单元的内容。 该运算符与++、--等运算符的优先级和结合性都相同。 *号的功能在不同的场合下是不同的。 和*是互逆的操作。因而,如果p是指针变量则*p和p相同;*a和a相同.注意:a是普通变量,p是指针变量 示例 指针变量作为函数参数 回忆下,之前有关函数参数的情况 函数的参数可以是指针类型变量。 使用的方式: 在定义时,通过定义指针变量作为形参 在调用时,使用指针变量名或是变量地址(即,传递地址) 使用这种类型参数的作用是:将一个变量的地址传送到另一个函数中。但要注意这是函数调用的参数传递仍然是值传递。 具有的特性: 用指针变量做函数参数使函数体中对形参的改变可以反映到实参数。 用指针变量作函数参数,可以从函数中带回多于一个的返回值。 示例 指针与一维数组(1) 数组中包含若干个元素,这些元素可以看成是相同类型的变量的集合 指针变量既然可以指向普通的变量,当然也可以用来指向数组元素。 数组元素的指针:数组元素的地址。 指向数组元素的指针(编程中的步骤) 定义指针变量,注意类型同数组的类型一致; 建立指向时,尤其是要注意第一个元素的指向 p=a[0]; 使用a[0]元素的地址赋给指针变量 p=a; 数组名代表数组中首元素的地址 指针与一维数组(2) 与指针相关的算术运算(P230和P234) 该主题主要讨论:当指针变量指向数组元素时 指针变量p的数加运算:p=p+1表明p的值将递增到指向数组的下一个元素。(思考:p+i?*(p+i)?) 自增、自减运算:(*p)++、*p++和*(++p) 注意,后两个强调获取值的同时,让指向下移 指针变量间的减法运算:p-q的结果是p和q之间相隔的元素数。 指针与一维数组(3) 访问数组元素有两种方法:(P231) a[i]或p[i] 注意:其中对于p[i],理解成是指针变量带下标P231 *(a+i)或*(p+i)从记忆的角度,一个是数组名,一个是指针变量 访问数组全部元素的基本方法:留意下循环怎么写! 设int a[10]; int i; int *p; 若有则编程时,一定要注意指向关系的建立 for(i=0;i10;i++) …a[i]… 数组名+下标法,较为熟悉 for(i=0;i10;i++) …*(a+i)… 数组名+指针法,容易理解 for(p=a;pa+10;p++) …*p… 指针变量+指针法,加把劲 使用第三种方法,一定要注意p的位置!常用p=a重定位!P233 for (p=a,i=0;i10;i++) …p[i]… 指针变量+下标法 数组名作函数参数的再讨论 如何使用 在调用时,实参为函数 在定义时, 用形参数组

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档