千家信息网

C语言野指针是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"C语言野指针是什么",在日常操作中,相信很多人在C语言野指针是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C语言野指针是什么"的疑惑有所帮助!接
千家信息网最后更新 2026年11月03日C语言野指针是什么

这篇文章主要介绍"C语言野指针是什么",在日常操作中,相信很多人在C语言野指针是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C语言野指针是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    指针是什么?

    • 指针只是一个名词而已,指针就是地址。

    • 我们平时说指针,也可以指指针变量。

    怎么表示?

    类型名  指针变量 = 地址;例如:int* pa = &a;//我们这里的指针类型叫做int*,我读做(yin te 星号)。//pa是指针变量
    • 这段表达式的意思是:定义了一个指针变量pa,里面存放的是a的地址。而这个指针变量的类型为int*。

    • 那下面就有同学疑惑了,那什么是指针变量?

    什么是指针变量?

    • 很简单,在之前我们学习了怎么定义整型变量a。

    • 比如定义一个《整型》《变量a》,然后把a初始化为10。

    int a = 10;
    • 不过现在变了,我们现在学习了指针。

    • 可以定义一个《int*》《变量pa》,然后把pa初识化为&a。

    注意:

    int* 是一个类型。叫做指针类型

    pa就叫做指针变量

    int* pa = &a;

    指针类型又是什么?

    • 既然变量有不同的类型,比如整型,浮点型等。

    • 那么指针也有也有不同的类型。

    char  *pc = NULL;int   *pi = NULL;short *ps = NULL;long  *pl = NULL;float *pf = NULL;double *pd = NULL;//NULL为空指针。
    • 这里可以看到,指针的定义方式是:类型 + * 。

    其实:

    • char* 类型的指针是为了存放 char 类型变量的地址。

    • short* 类型的指针是为了存放 short 类型变量的地址。

    • int* 类型的指针是为了存放 int 类型变量的地址。

    指针类型存在的意义

    • 那有这么多的指针的类型,指针类型的意义是什么?

    • 我们在这里先说两个重要结论:

    指针的类型决定了指针向前或者向后走一步(也就是地址+1)有多大(能走多少个字节)

    指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。

    • 比如: char* 的指针+1(也就是地址加一)只能跳过一个字节,而 int* 的指针+1(地址+1)就能跳过四个字节。

    • 因为char类型在内存中占1个字节,int类型在内存中占4个字节。

    • 再比如: char* 的指针解引用就只能访问一个字节,而 int* 的指针的解引用就能访问四个字节。

    • 也不能空谈,我们看下面的例子

    int main(){        int n = 10;//定义整型变量n,初始化为10        char* pc = (char*)&n;//定义字符类型指针变量pc,初始化为n的地址        int* pi = &n;//定义整型指针变量pi,初始化为n的地址        printf("%p\n", &n);        printf("%p\n", pc);        printf("%p\n", pc + 1);        printf("%p\n", pi);        printf("%p\n", pi + 1);        return 0;}

    打印结果如下,为16进制的数字。可以看出来字符类型的指针变量pc加1,只能操作一个字节,所以从4+1变到5。而整型变量pi+1跳过了4个字节,变为了8。


    综上所述,这就是指针类型的意义。

    野指针是什么?

    • 听到野指针可能有人会疑惑这个名词什么意思啊?

    • 不要着急,野指针很好理解。

    对一个狗形容为野的话,可以理解为这个野狗经常占别人的地盘,或者随机出现在任何地方

    • 所以野指针也是这个意思呀。

    • 野指针就是总是占别人内存(地址)的指针。或者随机出现一个地址。

    野指针产生的原因

    一、 指针未初始化

    int main(){  int *p;//局部变量指针未初始化,默认为随机值    *p = 20; return 0; }

    二、 指针越界访问

    #include int main(){    int arr[10] = {0};    int *p = arr;    int i = 0;    for(i=0; i<=11; i++)   {        //当指针指向的范围超出数组arr的范围时,p就是野指针        *(p++) = i;   }    return 0; }

    如何避免野指针(野狗)的出现呢?

    指针初始化(就是把野狗栓到一个地方,不让他随便占别人的地盘)

    小心指针越界(把野狗拴好,避免挣脱绳子)

    指针运算

    指针减指针,得到是两个指针之间的元素个数。

    到此,关于"C语言野指针是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

    指针 类型 变量 地址 字节 学习 就是 语言 野狗 内存 意义 意思 不同 两个 也就是 名词 地方 地盘 字符 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融监管科技数据 朗新科技与工业互联网 互联网的科技创新 华宇互联网科技 北京互联网络科技有限公司 互联网科技公司名称 甘肃拓世互联网科技有限公司 深圳互联网科技怎么样 深圳市运趣互联网科技有限公司 互联网科技中介 互联网经济与金融科技 互联网科技产业特征 国大互联网教育科技有限公司工作 企晟互联网信息科技有限公司 2021互联网科技公司排名 扫呗互联网科技有限公司 互联网科技博主张洲 盐城市攀科互联网科技有限公司 互联网科技创新创业项目 武汉亿视互联网科技有限公司 互联网科技公司经营范围 科技互联网政务服务 互联网巨头科技公司 金融科技和互联网金融 四个字互联网科技公司取名 互联网科技股午盘股票涨跌 昭通云南众福互联网科技有限公司 迪庆互联网科技招生 半导体是互联网高科技吗 半导体行业属于互联网高科技类吗
    0