码迷,mamicode.com
首页 > 编程语言 > 详细

C++之指针

时间:2017-08-23 23:02:15      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:访问   改变   引用   ffffff   add   初始化   nullptr   tran   最好   

C++中指针是一个很让人头疼的东西,指针指向这儿指向那儿很容易把人搞晕了。指针实现了对象的间接访问,指针本身也是对象这点和引用不同,引用仅仅是对象的别名。指针可以在其生命周期内指向不同的对象(当然除了指针常量),另外指针无需在定义时赋值,指针也可以为空指针或者无效指针。

常用的定义方法如下:

int a=10;

Int *b=&a;//运用取地址运算符

注意:引用不是对象,没有实际的地址,所以没有指向引用的指针!

 

指针的值类型:

1.指向了一个对象;

2.指向紧邻对象所占空间的下一个位置;

3.空指针;

4.无效指针;(不能对无效指针操作,后果无法预计)

 

利用指针访问对象就是使用解引用运算符“*”,要注意的是解引用操作只能用于已经指向某个对象的指针

空指针的产生方法:

 

int* p1=nullptr;

int* p2=0;

int* p3=NULL;//包含头文件cstdlib

注意:在使用指针的时候最好要进行初始化!

 

  对于指针的赋值中,难以区分的是指针的指向改变了,还是指针指向的对象改变了,很简单的方法就是看“=”的左边是指针还是其指向的对象,简单点可以看其有没有用解引用运算符“*”。对于两个指针可以使用==和!=运算符来判断是否指向了同一个对象,另外指针还可以进行“-”操作,当然在数组中才有意义,减操作能够获取到两个对象之间索引的间隔,对两个指针“+”、“*”、“/”的操作时没有意义的。另外非空指针强制类型转换布尔型为true。

   关于void*指针,该指针可以存放任何对象的地址,但是不能直接使用void* 指针,在使用void*之前必须要进行强制类型转换已确定其指向的对象类型,才能进行相关的操作,简单来说void*指针仅仅代表内存空间,对其内存中存放的对象类型根本不知道。

 

指针和数组名的区别:

  我们在使用数组的时候经常使用数组名来操作,且数组名代表了数组的首地址,感觉和指针的使用差不多,但其实数组名更包含的该数组的内存信息,指针仅仅是存放了一个地址。但需要注意的是,如果函数需要传入数组来进行操作的化,不能只传入数组名,因为编译器会将其退化成一个指针,所以在需要对数组操作的时候,形参必须要包含数组首地址以及数组长度信息。

 

以上是目前对于C++中指针的总结,后续会继续补充!

C++之指针

标签:访问   改变   引用   ffffff   add   初始化   nullptr   tran   最好   

原文地址:http://www.cnblogs.com/chmm/p/7420514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!