常量指针,指针常量,野指针

来源:互联网 发布:躬匠精神知乎 编辑:程序博客网 时间:2024/06/06 01:53

在我看来,不必太纠结于常量指针和指针常量的汉语名称,一定要记住用法就好了。

记有一指针,p表示地址,*p表示值。

1、常量指针

书写方式有const int *p或者int const *p。

在这种情况之下,const始终在*p之前,也就是说const(常量)修饰*p(指针的值)。*p不能修改,就是说该指针指向的值不能修改。

在这种情况之下,*p是只读的。

#include <iostream>using namespace std;int main(){ int a = 10; int const *p = &a; cout<<a<<endl; cout<<*p<<endl; return 0;}

如果修改*p的值,会报错:  assignment of read-only location'*p';
注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指针可以被赋值为变量的地址,之所以叫做常量指针,是限制了通过这个指针修改变量的值。在上例中可以通过改变a来改变*p的值。

2、指针常量

书写方式是int * const p;

const p表示地址不可改变,也就是说指针常量的地址不可修改。

int a = 10;

int * const p = &a;

此后p始终指向a,不可修改。


3、野指针

迷途指针,也被称为野指针或悬浮指针,是指将delete 用于指针(从而释放它指向的内存),但没有将它设置为空时引发。如果随后你在没有重新赋值的情况下使用该指针,后果将是不可预料的。

上例中在释放内存后,要将地址指向NULL。

delete p;

p = NULL;

为了安全,这是很有必要的。

0 0
原创粉丝点击