欢迎来到天天文库
浏览记录
ID:50044453
大小:108.50 KB
页数:17页
时间:2020-03-08
《C语言程序设计实用教程 教学课件 作者 陈方第6章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、6.1指针与指针变量6.1.1指针在计算机中,内存由一个个具有连续编码的存储单元所组成,即每一个存储单元都具有唯一的、固定的编号,这个编号称为内存单元的地址。如果在程序中定义了一个变量,由于不同的数据类型占据不同字节的存储空间,在编译时,系统就根据程序中定义的变量类型,分配相应的存储空间。例如,对整型变量分配2个字节,对实型变量分配4个字节,对字符型变量分配1个字节,而每一个字节都有一个地址。每个变量的首字节的地址称为该变量的地址。一个变量的地址称为这个变量的指针,指针就是地址。内存中的地址常用十六进制整型数表示。如何查看一个变量的地址呢?可以用取地址运算符“&”来实现。如运行以下
2、程序:main(){inta=26;printf("&a=%x,a=%d",&a,a);}可以查看整型变量a的地址(a占2个字节,看到的是它的首字节的地址)和a的值。6.1.2直接访问和间接访问在C语言的程序中,一般是通过变量名对内存单元进行存取操作的。程序经过编译以后将变量名转换为变量的地址,对变量值的存取都是通过地址进行的。像这种直接按变量地址存取变量值的方式称为“直接访问”。如对以下程序:main(){inta,b,c;a=10;b=16;c=a+b;printf("%d",c);}变量的“间接访问”方式是将变量a的地址存放在另一个称为“指针变量”的变量中,当要读取变
3、量a的值时,先从指针变量中取出a的地址,再从这个地址单元中取出a的值。6.1.3指针变量的定义和引用如前所述,变量的地址就是变量的指针,存放变量指针(地址)的变量称为指针变量。指针变量的使用和其他变量的使用一样需要“先定义,后使用”。1.指针变量的定义指针变量不同于其他变量,它是用来专门存放地址的,必须将它定义为“指针类型”。指针变量定义的一般形式为:数据类型*指针变量名其中,“数据类型”说明该指针变量所指向的变量类型,“*”表示所定义的变量是一个指针变量而不是一个普通变量。例如:inta,b,*pa,*pb;pa=&a;pb=&b;定义了整型变量a、b及指针变量pa、pb,且pa
4、、pb是用来指向整型变量的(即用来存放整型变量的地址)。“&”是取地址运算符,pa=&a将变量a的地址存放到指针变量pa中,pb=&b将变量b的地址存放到指针变量pb中。在定义指针变量时可以赋给初值,例如:inta,b,*pa=&a,*pb=&b;2.指针变量的引用在定义了一个指针变量并确定了它的指向后,就可以利用它来访问所指向的变量,称为对指针变量的引用。引用指针变量的一般形式为:*指针变量名这里的“*”称为指针运算符,也称为“间接访问”运算符。[例6-1]指针变量的引用。程序如下:main(){inta,b,*pa,*pb;pa=&a;pb=&b;a=2;b=4;printf(
5、"%d,%d",*pa,*pb);*pa=10;*pb=20;printf("%d,%d",a,b)}程序运行结果:2,410,20注意:在C语言中,“*”符号目前已出现三种用法,一是乘法符号;二是指针变量定义符;三是指针变量引用符。在上例中,“先定义”指针变量,“后使用”——给它赋值(变量的地址)、引用它。等同于变量a*pa变量a的地址&apa=&a6.2指针运算与其他变量一样,指针也是一种特殊的变量,也有指针运算。其中最常用的运算有:取地址运算&,取值运算*,以及指针加、减运算等。1.取地址运算&取地址运算是指取出运算符&后面的变量在内存中占用的空间的起始地址。因为被指
6、向的变量可能占用多个内存单元,指针并不记录它的所有地址,而只指向它的起始地址。2.取数据运算*与取地址运算符“&”相对应的是取数据运算符“*”,也称指针运算符。取地址运算的操作对象是变量,而取数据运算的操作对象则是指针变量,用于访问某个地址的数据。“*”运算符除作为取数据运算符外,还作为定义指针变量标识符,另外还可作为算术乘法运算符。对于“*”在不同场合的作用,编译器能够根据上下文环境判别其作用。3.指针变量的算术运算在C语言中,可以通过加减一个整数来移动指针。指针增1运算后指向下一个数据(注意不是下一个字节)的位置,指针减1运算后指向上一个数据的位置。例如:inta,*pa;pa
7、=&a;pa++;在这段程序中,定义pa为指向整型变量的指针变量,则pa++相当于pa=pa+1×2(每个整型变量在内存中占两个字节),即pa++使指针向下移动两个字节指向下一个数据。6.3指针与数组指针与数组关系密切。一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。因此,指针变量可以指向数组和数组元素。数组的指针是数组的起始地址,数组元素的指针是数组元素的地址。使用指针可以对数组进行相关的操作。6.3.1指向一维数组的指针变量C语言规定
此文档下载收益归作者所有