欢迎来到天天文库
浏览记录
ID:52123466
大小:338.34 KB
页数:54页
时间:2020-04-01
《指针是C语言中的一个概念.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章指针指针是C语言中的一个概念,正确而灵活地运用指针,可以有效地表示复杂的数据结构、难动态分配内存、方便使用字符串和数组、能使函数返回一个以上的结果、能直接使用内存地址等。本章内容包括:10.1地址和指针的概念10.2变量的指针和指向变量的指针变量10.3数组与指针10.4字符串与指针10.5指向函数的指针10.6返回指针值的函数10.7指针数组与指向指针的指针10.1地址和指针的概念一、指针概述:1、地址的概念与取地址运算:内存以字节编码,每个编码都是一个地址。我们原先学过的变量、数组、函数等都放在内存中,在程序中,我们是通过变量名等使用变量、给变量赋值等,但实际运行时,系统使用的是内
2、存地址,而不是变量名。我们怎样知道机器将某种数据放在内存的什么地方呢?可用求地址运算符&如:inta=3;&a就是变量在内存中的地址。可以用printf(“%x”,&a);看出其地址。注意,这个地址并不是始终不变的,这是由机器和操作系统来安排的,我们无法预先知道。在数组中,数组名代表数组的首地址故a表示的地址和&a[0]的地址相同。但&不能施加在常数、常量或表达式上,也不能施加在寄存器变量上(因为寄存器变量在cpu中,不在内存中)。二、指针变量:既然存储在内存中的各种变量都有一个地址,我们能否这样设想:定义某种变量,让这个变量的值等于某个变量的地址,如同某个房间号、门牌号一样?回答是肯
3、定的。我们把这种存放某种变量地址的变量称为指针变量。1035….ab20102012p2010q2012因此,在C语言中,将地址形象化地称为指针说明(系统对变量的访问形式分为两种)一个变量的访问(访问是指取出其值或向它赋值)方式有两种:(1)直接访问,通过变量名访问,如通过变量名i直接访问。(2)间接访问,通过该变量的指针来访问,如通过指针p访问变量i。1.内存地址──内存中存储单元的编号(1)计算机硬件系统的内存储器中,拥有大量的存储单元(容量为1字节)。为了方便管理,必须为每一个存储单元编号,这个编号就是存储单元的"地址"。每个存储单元都有一个惟一的地址。(2)在地址所标识的存储单元中存
4、放数据。注意:内存单元的地址与内存单元中的数据是两个完全不同的概念。2.指针──即地址一个变量的地址称为该变量的指针。通过变量的指针能够找到该变量2.变量地址──系统分配给变量的内存单元的起始地址。假设有这样一个程序:main(){inti;scanf("%d",&i);printf("i=%d",i);}C编译程序编译到该变量定义语句时,将变量i登录到"符号表"中。符号表的关键属性有两个:一是"标识符名(id)",二是该标识符在内存空间中的"地址(addr)"。为描述方便,假设系统分配给变量i的2字节存储单元为2000和2001,则起始地址2000就是变量i在内存中的地址。3.变量值的
5、存取──通过变量在内存中的地址进行系统执行"scanf("%d",&i);"和"printf("i=%d",i);"时,存取变量i值的方式可以有两种:(1)直接访问──直接利用变量的地址进行存取1)上例中scanf("%d",&i)的执行过程是这样的:用变量名i作为索引值,检索符号表,找到变量i的起始地址2000;然后将键盘输入的值(假设为3)送到内存单元2000和2001中。此时,变量i在内存中的地址和值,如图10-1所示。2)printf("i=%d",i)的执行过程,与scanf()很相似:首先找到变量i的起始地址2000,然后从2000和2001中取出其值,最后将它输出。(2
6、)间接访问──通过另一变量访问该变量的值C语言规定:在程序中可以定义一种特殊的变量(称为指针变量),用来存放其它变量的地址。例如,假设定义了这样一个指针变量i_pointer,它被分配到3010、3011单元,其值可通过赋值语句"i_pointer=&i;"得到。此时,指针变量i_pointer的值就是变量i在内存中的起始地址2000,如图10-1所示。通过指针变量i_pointer存取变量i值的过程如下:首先找到指针变量i_pointer的地址(3010),取出其值2000(正好是变量i的起始地址);然后从2000、2001中取出变量i的值(3)。(3)两种访问方式的比较两种访问方式之间的
7、关系,可以用某人甲(系统)要找某人乙(变量)来类比。一种情况是,甲知道乙在何处,直接去找就是(即直接访问)。另一种情况是,甲不知道乙在哪,但丙(指针变量)知道,此时甲可以这么做:先找丙,从丙处获得乙的去向,然后再找乙(即间接访问)。10.2变量的指针和指向变量的指针变量(1)指针──即地址一个变量的地址称为该变量的指针。通过变量的指针能够找到该变量。(2)指针变量──专门用于存储其它变量地址的变量指针变量i_
此文档下载收益归作者所有