重庆建网站企业有哪些,开发一个平台app需要多少钱,5g云网站建设,什么类型的网站野指针#xff1a;
概念#xff1a;野指针就是指针指向的位置是不可知的#xff08;随机的、不正确的、没有明确限制的#xff09;
指针非法访问#xff1a;
int main()
{int* p;//p没有初始化#xff0c;就意味着没有明确的指向//一个局部变量不初始化#xff0c;放…野指针
概念野指针就是指针指向的位置是不可知的随机的、不正确的、没有明确限制的
指针非法访问
int main()
{int* p;//p没有初始化就意味着没有明确的指向//一个局部变量不初始化放的是随机值0xcccccccc//*p 10;//非法访问内存了return 0;
}
指针越界访问
int main()
{int arr[10] { 0 };int* p arr;int i 0;for (i 0; i 11; i){//当指针指向的范围超出数组arr的范围时p就是野指针*(p) i;}return 0;
}
指针指向的空间释放
int* test(void)
{int a 0;return a;
}int main()
{int* pi test();//这个时候pi属于野指针return 0;
} 如何避免野指针
1.指针初始化
2.小心指针越界
3.指针指向空间释放即使置NULL
4.避免返回局部变量的地址
5.指针使用之前检查有效性
int main()
{//int* pi NULL;//*pi 100;//errint* pi NULL;//指针初始化 NULL - 0if (pi ! NULL){*pi 100;//ok}return 0;
}
指针运算
指针-整数
#define N_VALUES 5
int main()
{float values[N_VALUES];float* vp;for (vp values[0]; vp values[N_VALUES];){*vp 0;}return 0;
} 另一种写法
int* p arr;for (i 0; i sz; i){*(p i) 1;}
指针-指针
指针-指针绝对值得到的是指针和指针之间的元素的个数
不是所有的指针都能相减指向同一块空间的指针才能相减有意义