[理学]第7章 c++ 指 针.ppt

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

目录 第7章 指 针 7.1 指针的概念 7.2 指针变量的定义 7.3 指针的运算 7.4 指向数组的指针的指针 7.5 字符串的指针 7.6 函数与指针 7.7 指针数组和二维数组的行指针 7.8 指向指针的指针 7.9 有关指针的数据类型和指针运算的小结 7.10 与指针有关的c程序典型举例 本 章 小 结 习题7 ;第7章 指 针 ;7.1 指针的概念 ;图7.1 变量的分配地址;执行这两条语句后,将整数2存放在分配给变量a 所对应的存储单元FF02H、FF03H两个字节中,将整数4存放在分配给变量b的存储单元FF04H、FF05H两个字节中。这种按变量名来访问变量所对应的存储空间而存取变量值的方式称为“直接访问”方式。;在C语言中,对变量的存储单元还可以用另外一种方式进行访问。 假设定义了一个变量pa,被分配的内存单元为FFF0H、FFF1H两个字节,但在变量pa的内存单元存放的是分配给变量a的地址值(如图7.1)。在C语言中可通过语句: pa=a; 将变量a的地址赋给变量pa。这时,pa变量的值就是FF02H,即变量a所占用存储单元的起始地址。 当要存取变量a时,可以通过变量pa来间接访问,即先访问(直接访问)变量pa的值(变量a的地址),根据该地址值FF02H,再找到存储单元FF02H、FF03H两个字节取出int型变量a的值。这样变量pa和变量a之间建立起一种联系,通过pa能知道a的地址,从而找到分配给a的存储单元,对a进行存取。这就是对变量a的间接访问。 若变量pa的存储单元中存放的是分配给变量a的地址,通常可以说变量pa“指向”变量a。在图7.1中以箭头表示这种“指向”关系。在C语言中用“*”运算符表示对所“指向”目标的访问,这里,*pa表示一个变量,即pa所指向的目标——变量a。因此, a=2; *pa=2; 两个语句作用相同。只是前一语句表示对变量a的直接访问,而后一语句表示对变量a的间接访问(通过变量pa)。 这样,在C语言中,除了前面介绍的简单变量之外,还可以在程序中使用一种特殊的变量,即指针变量,如变量pa。指针变量和简单变量一样占用一定的存储空间。但是,它与简单变量不同之处在于,指针变量的存储空间中存放的不是普通的数据,而是地址。;7.2 指针变量的定义 1. 指针变量的定义 与简单变量一样,指针变量也必须先定义后使用。 定义指针变量的一般形式为: 数据类型 *指针变量名;;例如: int *ip; (ip是指向整型变量的指针变量) char *name; (name 是指向字符型变量的指针变量) 定义了名字为ip、name的两个指向不同类型数据的指针变量。 定义指针变量名时前面的“*”,表示该变量的类型为指针型变量。例如,定义中的指针变量是ip和name,而不是*ip和*name。 指针变量定义时所指定的数据类型不是指针变量本身的数据类型,因为指针变量中存放的内容是地址。值得注意的是,计算机硬件不同,地址的数据长度不同。因此,指针变量本身的数据长度是由编译系统决定的,它与计算机的地址字长相适应。指针变量定义时指定的数据类型是指针变量所指向目标变量的数据类型。例如,上面定义中的指针变量ip所指向的地址单元是一个可以用来存放一个int型数据的地址,name 所指向的地址单元是一个可以用来存放一个char型数据的地址。 具有相同数据类型的指针变量可以同时定义,也可以和简单变量一起定义。例如: int a,b, *pa, *pb; 都是合法的定义。;2. 指针变量的初始化 指针变量在定义的同时,也可以被赋予初值,称为指针变量的初始化。由于指针变量是存放地址的变量,所以初始化时赋予的初值必须是地址。 指针变量的初始化的一般形式为: 数据类型 *指针变量名=初始地址值; 例如: int a, *pa=a; 在定义指针变量pa的同时,把变量a的地址作为初始值来初始化pa。 应注意,初始化中的*pa=a不是一个运算表达式,而是一个说明语句。在这里是将变量a的地址值赋给指针变量pa,而不是*pa。 它等价于: int a, *pa; pa=a;;3. 与指针有关的两个运算符 在C语言中,有两个与指针有关的运算符。 :称为地址运算符,其功能是返回操作对象的地址; *:称为指针运算符,其功能是返回操作数(指针变量)所指向的目标对象的值。 ;图7.2 和*运算的意义符;在程序中定义了两个变量a和pa,假设编译时系统分配的内存空间首地址分别为FF00H和FF02H(如图7.2)。其中变量a是int型的简单变量,并赋初值为3。变量pa是指针变量,可以用来存放一个int型数据的地址。 然后,将变量a的

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档