指针与数组函数.DOC

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

第六章 指 针 教学目的:指针是C语言程序设计中的一个重要内容,通过指针的使用,可使许多处理能够实现。学习指针,要掌握指针的基本概念,能够用指针去引用数组、函数。 重点难点:指针的定义,指针与数组、指针与函数、指针与字符串的关系,通过普通指针、指针数组、行指针对数组进行访问。 在前面介绍C语言时曾提到:“一个变量实际上是代表了内存中的某个存储单元”,那么C语言是如何存取这个存储这个存储单元的内容呢?这一章将作具体的介绍。指针内容是C语言程序中的精华部分,是比较难掌握的内容,在数组、函数、字符串等内容中有独到的作用,编程中大量使用该内容,希望同学们一定要掌握好。 6.1指针概述 §6.1.1地址与指针 变量的地址和指针 一、地址与取地址运算 首先来看计算机的内存形式,它是以字节为单位的一片连续的存储空间,每一字节都有一个编号,这个编号称为内存地址。就像旅馆的每个房间都有一个房间号码一样,没有房间号码,旅馆工作人员就无法进行管理;同理,没有对内存字节的编号,系统就无法对内存进行管理。因为内存的存储窨是连续的,内存中的地址编号也是连续的,并用二进制数来表示,为了便于理解,这里用十进制数来描述。 若在程序中定义了一个变量,C编译系统就会根据定义中的变量类型,为其分配一定字节为的内存空间(整型2字节、实型4字节、双 精度型8字节、字符型占1字节…),此后这个变量的内存的地址就确定了。若有如下定义:int a,b;float x;char ch;系统为它们分配的存储单元如下: a b x ch 每个变量的地址是指所占存储单元的第一个字节的地址,这里称a的地址为1012,b的地址为1015,x的地址为1201,ch的地址为1301。程序中的x就是变量x的地址。 二、指针和指针变量 对于用户来说,在程序中只需指出变量名,无需知道变量在内存中的具体地址,每个变量和具体地址的联系由C编译系统来完成。程序中我们对变量进行存取操作,实际上就是对某个地址的存储单元进行操作。这种直接按变量的地址存取变量值的方式称为“直接存取”方式。C语言中,还提供了一种特殊的变量,这种变量是用来存放地址的。如下图所示: 假设我们定义了一个这样的变量p,它也有自己的地址(2002);若将变量a的地址(1012)存放到变量p中,这时访问变量a所代表的存储单元,可以先找到变量p的地址(2002),从中取出a的 p → a 地址,然后再去访问1012为首的存储单元,这种通过变量p间接得到变量a的地址,然后再去存取变量a的值的方式称为“间接存取”方式。 在上述情况下通常称变量p指向了变量a,变量a是变量p所指的对象;它们的关系如图所示。指向关系是通过地址来建立的,“ → ” 只是一种示意,形似“指针”。从这个意义出发,将一个变量的“地址”称为该变量的“指针”。变量a的地址称为变量a指针。显然指针是地址的形象化名称,那么用来存放指针的变量就称为“指针变量”。 p就是一个指针变量。 在C语言中,指针被广泛使用,它和数组、字符串、函数之间的数据传递都 有着联系。在某些场合,指针是使运算得以进行的唯一途径; §6.1.2指针的类型和指针定义 指针也是具有类型的,它的类型就是它所指向的实体,它可指向一个简单变量、一个一维数组及一个某类型的函数。 定义指针变量的一般形式为: 类型名 *指针变量名1,*指针变量名2,……; 例如:int *pi,*pj; 定义了两个指针变量,pi,pj都是用户自己命名的标识符,在变量前加上*来说明它是指针变量,*不能省略,若省略,以上两个变量就变成整型变量。由于它的类型名是整型的,它只能指向整型变量,也就是说它只能存放整型变量的地址。整型就称为pi,pj的“基类型”。 又如: double *pd;char *s1,*s2;定义了三个指针变量pd,s1,s2其中pd的基类型为double类型,在指针变量pd中,只能存放double类型变量的地址;s1和s2的基类型为char类型,在s1和s2中只能存放char类型变量的地址。 为什么指针变量要有基类型,一个指针变量存放的是一个存储单元的地址的值。这是的一个存储单元中的“一”所代表的字节数是不同的:对int而言代表2个字节;对float而言代表4个字节double和char又代表的不同。这就是基类型不同的含义。这主要是在对指针变量进行增减运算(指针移动)时移动的单位就不是一个存储单元了。所以说必须区分它的基类型。 例:int *p;x=3; p=x; 以上语句定义了一个指针变量p和整型变量x,在执行部分把p指向了x

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档