一.定义:野指针是指向位置是不可知的
1.非法访问
int *p;
*p=20//非法访问
2。越界访问
int arr[10]={10};
int *p;
int i=0;
for(i=0,i<=10;i++){
*p=i;
}//当i=10时进行了越界访问,超出了数组
3.指针释放了,还给操作系统仍进行访问,变为野指针
动态释放开辟
int *text{
int a;
return *a;}//进入循环后a的内存空间已经被释放
int main(){
itn*p=text();再次访问空间a
*p=20;
return 0;
}
二.避免野指针的方法
1.进行指针的初始化//好的编程习惯
当不知道*p指针应该初始化什么时,int *p=NULL;
2.小心越界,c语言本身是不会检测越界的
3.指针指向的空间释放,及时置空
4.指针使用之前检查它的有效性
if(p!=NULL);
*p=10;
三.指针的运算
1.指针+-
2.指针的关系运算
#define N_values 5;
float *values[N_VALUES];
float*vp;
for(vp=values[0];vp<&values[N_VALUES];){//指针的逻辑运算
*vp++;//指针的加减
}
数组名字就是首元素的地址
3.指针-指针 前提两个指针指向同一块空间
运行结果是两个指针之间的元素个数
strlen求字符串的长度