欢迎来到天天文库
浏览记录
ID:37441126
大小:900.50 KB
页数:197页
时间:2019-05-12
《计算机本科C语言第十章讲》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章指针重点:指针的概念、指针的运算、指针的应用难点:指针概念的建立2004年11月1日10.1指针的概念1地址内存区的每个字节有一个编号,这就是“地址”。内存字节地址旅馆房间房间号在地址所标志的单元中存放数据,相当于房间中住旅客一样。凡在程序中定义的变量,在编译时,系统都给它们分配相应的存储单元。如,一般微机C系统给int变量分配2字节,给float变量分配4字节。每个变量所占用的存储单元都有确定的地址。例如:inta=3,b=4;floatc=4.5,d=8.6;chare=‘w’,f=‘y’;它们在内存中的情况如右图所示:变
2、量的地址变量的地址:是其所占存储单元第一个字节的编号,是用:&变量名来表示。由此可得:&a1010&b1012&c1014&d1018……要访问内存中的变量,在程序中通常通过变量名来引用变量的值。例如:printf(“%d”,a);实际上,在编译时,在内存中不再出现变量,而只有地址&a。系统找到其对应的地址1010,然后从1010和1011两个字节的整型存储单元中取出其值。又例如:scanf(“%d”,&b);将键盘输入的一个数存到1012开始的2个字节的整型存储单元中。由于通过变量的地址能找到变量的存储单元,我们说地址“指向”该变
3、量单元。路牌路变量地址变量存储单元指向指向在C中,将这种“指向”形象化为指针。在三叉路口,路牌就是一个指针,它指向某一目的地;变量的地址它指向变量的存储单元,因此变量的地址就是变量的指针。若一个变量的地址为2000,可以说变量的指针为2000。房间号房间指向3变量的指针下图:a的地址为1010,即a的指针为1010,也就是1010指向a的存储单元。如同房间号1010指向1010房间。4直接访问方式这种按变量地址存取变量值的方式,称为“直接存取”方式或称“直接访问”方式。5“间接存取”方式或称“间接访问”方式:先找到存放b的地址的变量
4、pb,从中取出b的地址,然后对1012开始的2个字节的整型存储单元进行存取操作。6指针变量存放地址的变量是一种特殊变量(地址变量或指针变量),它只能用来存放地址。根据上图所示的逻辑关系,可以把它们形象地表示为下图:指向指向指向指向指向指向小结:地址:内存中每个字节的编号变量的地址:指着是变量所占存诸单元第一个字节的地址。指针变量:其值为地址的变量指向:是通过地址来体现,通过地址能找到所需的变量单元,可以说,地址指向该变量单元。&a3a101010.2变量的指针和指向变量的指针变量内容:指针变量的定义指针变量的引用及作函数的参数一、指
5、针变量的定义一般形式:类型标识符*变量名如:int*p1;char*p2;float*p3;说明:1)当*出现在声明中,说明p1、p2、p3为指针变量(2)指针变量有确定的指向的数据类型。int*p1;中int是指:所定义的指针变量是指向整型值的指针变量,或者说p1只能存放整型数据的地址,也就是说p1只能用来指向整型数据;int就是指针变量的基类型,指针变量的基类型用来指定该指针变量可以指向的数据的类型。pa、pc等分别指向不同数据类型的指针变量,它们的共同点:1)值为地址,2)它们的存储单元空间是一样的。一个指向char的指针和一
6、个指向int的指针不同点:其实,指针本身只有一种,指针变量存放的值都是内存地址。在定义指针时,定义指针所指向的数据类型的目的是说明如何解释指针所指向的空间的数据。0x300x310x320x330x00x0065FDED0x0065FDEE0x0065FDEF0x0065FDF00x0065FDF1如果有一个整型指针p指向了地址0x0065FDED,那么系统就会将指针指向的地址开始的2个字节当成整数值来解释;而如果一个字符指针s指向了地址0x0065FDED,那么系统会认为这里存放了一个字符串。在定义指针变量时要注意:1一般形式:基
7、类型*指针变量名2不能用一个整数给一个指针变量赋初值int*p=2000;写此语句的原意可能是想将地址2000作为指针变量p的初值,但编译系统并不把2000认为是地址,而认为是整数,因此认为是语法错误。3在定义指针变量时必须指明基类型。float*p;p++;说明p只能指向类型为实型的变量,且使指针移动1个位置意味着移动4个字节。二、指针变量的引用1有两个与指针变量有关的运算符&取地址运算符*指针运算符(间接访问运算符)例如:&a为变量a的地址,*p为指针变量p所指向的存储单元。2指针变量赋值运算1)可以将一个变量的地址直接赋给同类
8、型的指针变量floatscore;float*pf=&score;charch;char*str=&ch;intt,k;int*p1=&t,*p2=&k;错误着是:p1=&ch;pf=&k;str=&score;2)同类型的指针变量之
此文档下载收益归作者所有