第09讲 指针.ppt

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

第九章 指 针 内容提要 指针与指针变量 指针与数组 指针与函数 指针与字符串 指针数组与命令行参数 基本概念--地址 地址:内存单元的编号 (图示) 数据在内存中的存储 (图示) 定义变量 -- 分配内存单元(将变量名转换为地址) -- 赋值 综合图示 基本概念--指针 变量的三要素:名字、类型与值 每个变量都通过变量名与相应的存储单元相联系,具体分配哪些单元给变量,由C编译系统完成变量名到对应内存单元地址的变换 变量分配存储空间的大小由类型决定 变量的值则是指相应存储单元的内容 数据的读写 根据变量的地址 读写内存单元的内容 指针 (一种数据类型,专门用来存放地址) (图示) 变量的地址 基本概念—间接访问 直接存储:根据变量地址存取变量值 变量地址 内存单元 间接存储:根据指针变量存取变量值 指针变量 变量地址 内存单元 变量访问图示 基本概念—指向 指针和指针变量 指针:一种特殊的数据类型,表示一个变量的地址。 指针变量:用来存储地址(指针)的变量。 指向 变量的地址(指针) 变量的内存单元 指针变量--(1) 变量的指针:变量的地址 指针变量:用来存储变量地址的变量 指针变量 另一变量 指针与指针变量 指针变量--(2) 指针变量--(3) 指针变量的类型决定了它所能指向的变量的类型 指针变量存放的是所指向的某个变量的地址值,而普通变量保存的是该变量本身的值 指针变量并不固定指向一个变量,可指向同类型的不同变量 两个指针运算符: * : 取变量的地址 p=i ; * : 取指针所指向的内容 j=*p ; 指针变量--(4) 注意:*与具有相同的优先级,结合方向从右到左。这样,*p即(*p),是对变量*p取地址,它与a等价;p与(*p)等价,a与*(a)等价 指针运算--(1) 指针变量的初始化 一般形式: [存储类型] 数据类型 *指针名=初始地址值; 指针运算--(2) 指针的赋值运算 将变量地址值赋给指针变量 (举例) 相同类型的指针变量之间的赋值 (举例) 指针运算--(3) 指针运算--(4) 指针的算术运算 加减运算:一个指针可以加、减一个整数n,其结果与指针所指对象的数据类型有关。指针变量的值(地址)增加或减少“n×sizeof(指针类型)” (举例) 指针运算--(5) 指针的关系运算 和基本类型变量一样,指针能进行关系运算 例如:p q,p q,p == q,p != q,p = q等 指针的关系运算在指向数组的指针中广泛的运用,假设 p、q是指向同一数组的两个指针,执行p>q的运算,其含义为,若表达式结果为真(非0值),则说明p所指元素在q所指元素之后。或者说q所指元素离数组第一个元素更近些。 指针运算--(6) 指针变量自增、自减运算具有上述运算的特点,但有前置后置、先用后用的考虑,务请小心。 例如:  int a[10], *p=a, *x,y; x=p++; /* x第一个元素分量, p指向第二个元素*/ x=++p; /* x、 p均指向数组的第二个分量*/ y= * p++ ;相当于*(p+ +)给y, y=a[0], p指向第二个元素; *(p++)与(*p)++ 含义不同,前者表示地址自增,后者表示当前所指向的数据自增。 2. *a的含意是什么? (答:a ) 3. (*p)++相当于什么? (答:a++ ) 多级指针 二级指针 -说明形式: -(举例) 多级指针 定义: 指向指针的指针 一级指针:指针变量中存放目标变量的地址 指向一维数组的指针(1) 数组名是一个常量指针,它的值为该数组的首地址 指向数组的指针的定义方法与指向基本类型变量的指针的定义方法相同, 例如: int a[10]={1,3,5,7,9}; int *p; p=a[2]; (把数组元素a[2]的地址赋给指针变量p) p=a; (把数组的首地址赋给指针变量p) 指向一维数组的指针(2) C语言规定:数组名代表数组首地址,是一个地址常量。 因此,下面两个语句等价: p=a[0]; p=a; 在定义指针变量的同时可赋初值: int a[10], *p=a[0]; (或 int *p=a;) 等

文档评论(0)

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

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

1亿VIP精品文档

相关文档