- 野指针,就是指针指向了一块不确定的地方,或者虽然指向了一块确定的地方,但是引用空间的结果却是不可预知的,这就是野指针
比如
int maint(void)
{
int *p;
*p=10; //这里的指针要指向的地址是不确定的,所以就是野指针
return 0;
}
野指针可能引发段错误,或者引发程序连环式错误,导致野指针有以下几种可能性:
1)指针指向了一块不确定的地方
2)指针虽然指向了一块确定的地址,但是这块空间没有权限去访问
3)访问空间时,内存越界导致野指针。比如指针数组有五个成员,但是你却常是访问第六个成员,这样就会导致内存越界。
2.const关键字
const对于普通变量的修饰:
int const a=19;//也可以写成const int a = 19,因为a是常量,所以不允许被修改
const修饰指针的三种形式:
1)int const *p 或者写成const int *p
int a=10;
int b=20;
int const *p=&a;
*p=100; //这一行代码是错误的,因为p指向的空间不能被修改
p=&b; //这样的写法是正确的,因为p本身是可以被修改的,此时p又重新指向了b
注意:int const p这种修饰的方式就说明了p不能被修改,但是p本身指向是可以被修改的
2)int *const p
比如:
int a=10;
int b=20;
int *const p =&a; //此时p指向了a
*p=100; //正确,因为p所指向的空间内容是可以被修改的
p=&b; //错了,因为指针变量p的内