C语言指针 指针 基础知识 指针变量(六)

举报
谦虚斯帕克 发表于 2022/03/22 16:39:39 2022/03/22
1.3k+ 0 0
【摘要】 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

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。