指针
张荣华_csdn
这个作者很懒,什么都没留下…
展开
-
野指针出现的三种情况
野指针在下面三种情况下会出现:1.指针未初始化指针变量在定义时不会自动初始化成空指针,而是随机的一个值,可能指向任意空间,这就使得该指针成为野指针。因此指针在初始化时要么指向一个合理的地址,要么初始化为NULL。2.指针指向的变量被free或delete后没有置为NULL在调用free或delete释放空间后,指针指向的内容被销毁,空间被释放,但是指针的值并未改变,仍然指向这块内存...原创 2018-07-08 00:20:43 · 5633 阅读 · 0 评论 -
this指针
在面向对象程序设计中,每个非静态成员函数都包含一个特殊的指针,指向调用该函数的对象,这个指针称为this指针。当对象访问类中的非静态成员函数时,编译器会自动将对象的地址隐式地作为第一个参数传递给this指针,在非静态成员函数中访问非静态成员时都隐含地使用了this指针。this的作用域是在非静态成员函数内部,在调用非静态成员函数时构造this指针,在非静态成员函数调用结束后销毁this指针。...原创 2018-05-21 12:50:42 · 206 阅读 · 0 评论 -
释放空间后将指针置空
在通过free函数释放空间后,最好将指针立即置空,这样可以防止后面的程序对指针的误操作。释放空间后,指针的值没有改变,无法直接通过指针本身判断空间是否已经释放,将指针置空有助于检测一个指针指向的空间是否已经释放。...原创 2018-07-01 14:53:23 · 4147 阅读 · 0 评论 -
指针和句柄的区别
句柄是windows编程中一个重要的概念。句柄是一个32位的无符号整数,表示一个对象的内存地址列表的整数索引,是分配给资源的唯一标识,这里面的对象指的是诸如应用程序实例、窗口、位图、GDI之类的资源对象。句柄并没有直接指向资源对象,而是保存着一个资源对象在资源注册列表中的索引,也就是说,句柄是间接指向资源对象的。资源对象加载到内存时需要将首地址在资源列表中进行注册,注册后无论该资源对象的地址是...原创 2018-07-06 15:18:39 · 580 阅读 · 0 评论 -
指针常量
指针常量-指针类型的常量指针常量本质上是一个常量,指针用来说明常量的类型,表示该常量是一个指针类型的常量。在指针常量中,指针自身的值是一个常量,不可改变,始终指向同一个地址。int a=10,b=20;int * const p=&a;*p=30;...原创 2018-07-06 15:28:44 · 467 阅读 · 0 评论 -
数组指针
数组指针本质上是一个指针,数组是指针指向的类型,表示指针指向一个数组,因此数组指针就是指向数组的指针。int a[3]={1,2,3};int( * p)[3];p=&a;原创 2018-07-06 21:08:06 · 1341 阅读 · 0 评论 -
区分指针数组和数组指针
通过指针数组和数组指针的声明不难看出,形式上两者唯一的区别就是()的存在,()直接影响了p的结合顺序。无()则p与[]首现结合构成数组,从而声明一个指针数组:int *p[3];有()则p与*首现结合构成指针,从而声明一个数组指针:int(*p)[3];...原创 2018-07-06 21:10:43 · 339 阅读 · 0 评论 -
指针传递的误区
通过指针传递参数时,最大的忌讳就是以为只要参数是指针就万事大吉了。实际上,应该首先确定要修改的变量类型,然后再将其地址作为参数。如果要修改的变量本身就是指针,就应该将该指针的地址作为参数,此时的形参类型就是指向指针的指针。...原创 2018-07-07 13:54:07 · 348 阅读 · 0 评论 -
指向指针的指针与二维数组的区别
int main(){int a[2][3]={{1,2,3},{4,5,6}};int **p=a;cout<<**p<<endl;} 以上代码有没有问题? 由于p是指向指针的指针,p指向一个int *类型的变量,而数组名a表示数组首元素的地址&a[0],因此p指向a[0]。然而a[0]并不是int *类型的变量,与p应...原创 2018-07-07 14:06:56 · 3946 阅读 · 0 评论 -
this指针
在面向对象程序设计中,每个非静态成员函数中都包含一个特殊的指针,指向调用该函数的对象,这个指针称为this指针。当对象访问类中的非静态成员函数时,编译器会自动将对象的地址隐式地作为第一个参数传递给this指针,在非静态成员函数访问中访问非静态成员时都隐含地使用了this指针。this指针的作用域是在非静态成员函数内部,在调用非静态成员函数时构造this指针,在非静态成员函数调用结束后销毁t...原创 2018-07-08 00:20:22 · 1437 阅读 · 0 评论 -
this指针常识性问题
下面关于this指针的说法正确的是:A.调用类的成员函数时,对象的地址会隐式地作为第一个参数传递给this指针;B.通过取地址符&可以获得this指针的地址;C.对象进行sizeof运算时会加上this指针所占用的空间;D.不能对this指针进行赋值操作。只有在访问类的非静态成员函数时编译器才会自动将对象的地址隐式地作为第一个参数传递给this指针,而在访问匪类跌静态成...原创 2018-07-08 00:20:35 · 1492 阅读 · 0 评论 -
智能指针
由于C++不支持垃圾自动回收机制,程序员必须手动释放动态申请的空间,否则会发生内存泄漏。为了解决令人头疼的内存泄漏问题,STL引入了智能指针。 智能指针实际上是一个类模板,对普通指针进行了一层封装,模板参数是指针指向的类型,通过重载->和*两个操作符使智能指针的用法与普通指针相同。通过析构函数释放指针指向的空间,使得内存管理完全由智能指针自动完成,无须手动释放。 由于C++11抛弃...原创 2018-07-20 00:10:33 · 282 阅读 · 0 评论 -
指针与引用的区别
指针是变量的地址,引用是变量的别名指针本身也是一个变量,指针的值是另一个变量的地址,指针指向这个变量,指针和指针指向的变量是两个不同的值。引用是给变量起了一个别名,可以认为引用于原变量是一个变量,只是这个变量有两个不同的名字。正是由于这个最根本的区别导致了某些运算符运算结果的差异,例如:sizeof运算符的运算结果不同:指针进行sizeof运算得到的是指针本身占用的空间,返回结果为4个字...原创 2018-07-08 00:21:11 · 211 阅读 · 0 评论 -
数组和指针的区别
int GetSize(int data]){return sizeof(data);}int main(){ int data1[]={1,2,3,4,5}; int size1=sizeof(data1); int *data2=data1; int size2=sizeof(data2); int size3=...原创 2018-05-14 16:34:07 · 146 阅读 · 0 评论