C语言第七章._第1页
C语言第七章._第2页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章地址和指针第7章地址和指针指针是c语言中广泛使用的一种数据类型。如果在程序中定义了一个变量,在对程序进行编译时系统会 给这个变量分配内存单元,内存单元编号也叫做地址。地址和指针的概念指针变量指向函数的指针对指针变量的操作函数之间地址值的传递通过实参向函数传递函数名或指向函数的指针变量传给main函数的参数7.1地址和指针的概念在计算机中,所有的数拯都是存放在存储器中的。一般把存 储器中的一个字节称为一个内存单元,不同的数据类型所占 用的内存单元数不等,如整型量占4个字节单元,字符型量 占1个字节单元等。为了正确地访问这些内存单元,必须为 每个内存单元编上号。根据一个内存单元的编号即可准确

2、地 找到该内存单元。既然根据内存单元的编号或地址就可以找 到所需的内存单元,所以通常也把这个地址称为指针。内存 单元的指针和内存单元的内容是两个不同的概念,下面用一 个通俗的例子来说明它们之间的关系。用户到银行去存取款 时,银行工作人员将根据用户的账号去找存款单,找到之后 在存单上写入存款、取款的金额。在这里,账号就是存单的 指针,存款数是存单的内容。对于一个内存单元來说,单元 的地址即为指针,其中存放的数据才是该单元的内容。在C语言中,允许用一个变量来存放指针,这种变量称为指针变 量。因此,一个指针变量的值就是某个内存单元的地址或称 为某内存单元的指针。7.2指针变量7.2.1指针变量的定义

3、也就是说,若X为一整型变量,则表达式&X的类型是指向整 数的指针,而它的值是变量X的地址。同样,若doubled;则&d的类型是指向双精度数d的指针,而&d的值是双精度变 量d的地址。所以,指针和地址是用来叙述一个对象的两个 方面。虽然&x、&d的值分别是整型变星x和双精度变量d的 地址,但&x、&d的类型是不同的,一个是指向整型变量x的 指针,而另一个则是指向双精度变量d的指针。在习惯上, 很多情况下指针和地址这两个术语混用了。可以用下述方法来定义一个指针类型的变量。廉般用“指鬻轟曙斗毀總勰型即雜喘存鹤它隔,int *ip;指针变量的一

4、般定义为类型标识符标识符;其中标识符是指针变量的名字,标识符前加了5 号,表示该变量是指针变量;而“类型标识符” 表示该指针变量所指向的变量的类型。一个指针变 量只能指向同一种类型的变量,也就是说,不能定 义一个指针变量,既能指向一整型变量又能指向双 精度变量。指针变量在定义中允许带初始化项,例如:int i, *ip=&;这里是用&对ip初始化,而不是对*ip初始化。7.2.2指针变量的引用指针变量同普通变量一样,使用之前不仅要定义说明,而 且必须赋予具体的值。未经赋值的指针变量不能使用,否 则将造成系统混乱,甚至死机。指针变量的赋值只能赋予 地址,决不能赋予任何其他数据,否

5、则将引起错误。在c语言中,变量的地址是由编译系统分配的,对用户完全透 明,用户不知道变量的具体地址。两个有关的运算符如下。(1)&:取地址运算符。(2)*:指针运算符(或称“间接访问”运算符)。C语言中提供了地址运算符&来表示变量的地址。其一般形式为&变量名;如&a表示变量a的地址,&b表示变量b的地址。设有指向整型变量的指针变量 p,如要把整型变量 a 的地址赋了 p 可以有以下 两种方式。1指针变量初始化的方法。int a;int *p=&a;2赋值语句的方法。int a;int *p;P=&a;不允许把一个数赋予指针变量,故下面的赋值是错误的:int *p;p=1000;被赋值的指针变量前不能再加“杯说明符,如写为*p=&a 也是错误的。假设:inti=200, x;int *ip;我们定义了两个整型变量 i、x,还定义了一个指向整型数的指针变量 ip。i、x 中可存放整数,而 ip 中只能存放整型变量的地址。我们可以把 i 的地 址赋给 ip:ip=&i【例71】指针变量的使用。main()int a, b;int *pointer_1, *pointer_2;a=100;b=10;pointe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论