欢迎来到天天文库
浏览记录
ID:38540550
大小:350.00 KB
页数:70页
时间:2019-06-14
《C++大学教程指针和基本指针的字符串》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章指针和基于指针的字符串指针引用调用数组与指针函数指针基于指针的字符串总结1指针:地址数据我们首先的观念就是简单地把地址作为数据,可以把地址存储在内存中。intx;10002x=2;100410201000由于地址作为数据对待,他们也可以存储在内存中。2一个变量的指针当一个变量存储另一个变量的地址时,那我们说它就是那个变量的指针。在内存表中,我们经常用箭头来表示指针,x的真实地址和我们理解的概念不相关。我们经常用任意地址描述指针,同时在以后经常会放弃它。intx;10002x=2;100410201000我们把1000作为整数2的指针
2、3指针的概念指针就是把地址作为数据,把地址存储在内存中指针变量:存储地址的变量变量的指针:当一个变量存储另一个变量的地址时,那我们说它就是那个变量的指针100021000如在某一程序中定义了intx;X=2;如系统给x分配的空间是1000号单元,则指向x的指针是另一个变量,该变量中存放的数据为10004指针变量的声明如何定义一个变量为指针变量?类型标识符*指针变量;如:int*intp;double*doublep;char*chPtr;多个指针变量需要分别加*:double*doublep,*doubleq;5关于指针的几个问题回答这些
3、问题可以使我们更好地理解指针。intx,*px;x=2;1000x21004问题:1、如何把x的地址置入px中?2、如何用px处理和改变x?1020px6问题1:指针赋值我们不能用简单的常数作为地址对指针进行赋值。我们永远不知道当我们编写程序时,变量地址的值将是什么?intx,*px;1000x=2;21004问题:1、如何把x的地址置入px中?我们不能用这样表示:1020pxpx=1000;7指针赋值如何把某一变量的地址置入一个指针变量中?用地址运算符“&”解决。如表达式“&x”返回的是变量x的地址。如:intp=&x;&运算符后面不能
4、跟常量或表达式。如&2是没有意义的,&(m*n+p)。也是没有意义的8地址运算符提供运算符返回操作数的地址,我们用&来表示。intx,*px;1000x=2;21004我们想要做的:px=x的地址1020我们应该表示为:pxpx=&x9处理内存地址使用变量的指针就是为了用这个指针得到变量的值并改变它。intx,*px;10002x=2;1004px=&x;2、我们怎样用px得到x的值并改变它?1020px10问题2:处理内存地址如何用指针变量处理和改变它所指向的单元的值?用引用运算符“*”解决。如*intp表示的是intp指向的这个单元的
5、内容。在对intp使用引用运算之前,必须先对intp赋值11引用运算符在定义中,*号是语法标记同时和类型结合在一起产生一个指针定义。在运算时,我们采用*号运算符,就象指针定义一样。但是*号是独立运算符,并和指针一起表示一个数值。intx,*px,y;1000x2x=2;1004px=&x;y2我们想得到:y=px指向的值;1020px我们表示为:y=*px;12指针处理我们可以认为一个指针是另一个变量的参考,当我们处理这个变量时,我们叫这个运算符为“参考运算符”,这个操作为“参考指针”intx,*px,y;1000x2x=2;10042p
6、x=&x;yy=*px;1020px*为引用运算符13指针的基本类型为什么指针要指向一定类型的数据?地址对于编译器来说不足以解析地址的数据类型。由于指针的基本数据类型可以对指针表达式进行错误检查,比如,分配一个整型数据指针,或者反之将产生一个警告。intx,*px,y;1000x2x=2;1004px=&x;y2y=*px;1020指针必须要有一个明确的数据类型px1000以便编译器可以解析数据的指向类型14指针实例如有:intX,*intp,Y;X=3;Y=4;intp=&X;1000intp10044Y10003X如执行:*intp=
7、Y+4;1000intp10044Y10008X注意:不能用intp=100;因为我们永远不知道变量存储的真实地址,而且程序每次运行可能都不同。运行Fig.8.4观察aPtr值的变化15指针的定义及使用指针变量可以指向不同的变量。如上例中intp指向x,我们可以通过对intp的重新赋值改变指针的指向。如果想让intp指向y,只要执行intp=&y就可以了。这时,intp与x无任何关系。同类的指针变量之间可相互赋值,表示二个指针指向同一内存空间。空指针指针没有指向任何空间空指针用常量NULL表示,NULL的值一般赋为0不能引用空指针指向的值
8、16指针变量的使用练习设有定义intx,y;int*p1,*p2;1000x1004y1008p11012p2执行语句:x=23;y=234;100023x1004234y1008p11012
此文档下载收益归作者所有