1.野指针
野指针就是指向的位置时不可知的(随机的,不正确的,没有明确限制的)
int main()
{
int *p;
//p没有初始化,就意味着没有明确的指向
//一个局部变量没有初始化的化,放的就是随机值:0xcccccccc
*p=10;//非法访问内存了,这里的p就是野指针
return 0;
}
int main()
{
int arr[10]={0};
int *p=arr;
for(int i=0;i<=10;i++)
{
*p=i;
}
return 0;
}
int * test()
{
int a=10;
return &a;//a的值被释放了额
}
int main()
{
int* p=test();
return 0;
}
int main()
{
int a=10;
int b=20;
int *p=&a;
*p=230;
//NULL->0
int* p2=NULL;
return 0;
}
怎么避免野指针
1.定义指针时候记得初始化
2.释放指针的时候记得把指针置NULL
3.小心数组越界访问。产生野指针。
指针运算
指针±整数
指针-指针的前提指向同一块空间的两个指针相减才有意义 。
指针-指针得到是中间相差的元素个数。
int my_strlen(char* str)
{
char* start=str;
while(*str!='\0')
{
str++;
}
return (str-start);
}
int main(void)
{
int len=my_strlen("abcdef");
printf("%d\n",len);
return 0;
}