C语言指针 指针 基础知识 指针变量(六)
【摘要】 4.野指针 定义指针变量一定要有明确的指向,禁止使用未赋值或未初始化的指针变量;野指针是指指针指向的位置是不可知的;#include <stdio.h>int main(){ int *p;//定义一个指针变量,局部变量未初始化,里面默认放的是一个随机值 *p = 20; return 0;}数组里只有10个数,从a0到a9,但是 i 是从0到12,那么从 i = 10时就不属于数组...
4.野指针
定义
- 指针变量一定要有明确的指向,禁止使用未赋值或未初始化的指针变量;
- 野指针是指指针指向的位置是不可知的;
#include <stdio.h>
int main()
{
int *p;//定义一个指针变量,局部变量未初始化,里面默认放的是一个随机值
*p = 20;
return 0;
}
数组里只有10个数,从a0到a9,但是 i 是从0到12,那么从 i = 10时就不属于数组a的范围里了,这就叫越界访问;
- 当指针指向的超出数组a[10]的范围时,p就是野指针;
- 3.指针指向的空间释放
#include <stdio.h>
int *test()
{
in a =10;
return = &a;
}
int main()
{
int *p = test();
printf("%d\n",*p);
return 0;
}
如何规避野指针
例如下面的代码是我翻看的避免野指针的示例:
int main()
{
char *ptr = (char *)malloc(MAX_SIZE);
if(NULL == ptr)
{
printf("malloc error!\n");
exit(1);
}
//memset(ptr,0,MAX_SIZE);
bzero(ptr,MAX_SIZE);
scanf("%s",ptr);
printf("ptr = %s\n",ptr);
free(ptr);
ptr = NULL;
}
- 指针初始化;
- 小心指针越界;
- 指针指向空间释放即使置NULL;
- 指针使用之前检查有效性;
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)