广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言野指针是什么
  • 762
分享到

C语言野指针是什么

2023-06-21 20:06:54 762人浏览 薄情痞子
摘要

这篇文章主要介绍“C语言野指针是什么”,在日常操作中,相信很多人在C语言野指针是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”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,初始化为10char* 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。

    C语言野指针是什么

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

    野指针是什么?

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

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

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

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

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

    野指针产生的原因

    一、 指针未初始化

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

    二、 指针越界访问

    #include <stdio.h>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语言野指针是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: C语言野指针是什么

    本文链接: https://www.lsjlt.com/news/300416.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C语言野指针是什么
      这篇文章主要介绍“C语言野指针是什么”,在日常操作中,相信很多人在C语言野指针是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言野指针是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!指针是什么...
      99+
      2023-06-21
    • C语言中野指针是什么
      这篇文章将为大家详细讲解有关C语言中野指针是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。(壹)  行经旅途遇猛虎 -- “野指针”概念:野指针就是指针指向的位置是不可知的(随机的、不正确的...
      99+
      2023-06-29
    • C语言的野指针与空指针是什么
      这篇文章主要介绍“C语言的野指针与空指针是什么”,在日常操作中,相信很多人在C语言的野指针与空指针是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言的野指针与空指针是什么”的疑惑有所帮助!接下来,请跟...
      99+
      2023-06-25
    • C语言指针详解之野指针
      目录指针是什么?怎么表示?什么是指针变量?指针类型又是什么?指针类型存在的意义野指针是什么?野指针产生的原因一、 指针未初始化二、 指针越界访问如何避免野指针(野狗)的出现呢?指针运...
      99+
      2022-11-12
    • C语言 野指针与空指针专篇解读
      一:野指针 概念:野指针就是指向的内存地址是未知的(随机的,不正确的,没有明确限制的)。 说明:指针变量也是变量,是变量就可以任意赋值。但是,任意数值赋值给指针变量没有意义,因为这样...
      99+
      2022-11-12
    • C语言的空类型指针,空指针,野指针详解
      目录空类型指针-void*空指针-NULL野指针造成野指针的原因1.指针未初始化2.指针越界访问3.指针指向的空间已经释放避免野指针总结空类型指针-void* void是空类型,vo...
      99+
      2022-11-12
    • C语言指针类型与野指针引起的原因
      目录一、指针是什么二、指针和指针类型1.指针±整数2.指针解引用三.野指针1.引起野指针的原因2.如果避免野指针一、指针是什么 指针也就是 内存地址 ,在计算机上我们访...
      99+
      2023-02-11
      C语言指针类型 C语言野指针
    • C语言基础野指针与空指针示例分析
      目录一:野指针野指针的成因1. 指针未初始化2. 指针越界访问3 .指针释放后未置空规避野指针1. 初始化指针 2. 避免指针越界 3 避免返回局部变量的地址 4. 开辟的指针释放后...
      99+
      2022-11-12
    • c语言指针的概念是什么
      C语言中的指针是一个变量,用于存储另一个变量的地址。简单来说,指针就是指向内存中某个位置的变量。指针的概念可以帮助我们实现一些高级的...
      99+
      2023-09-16
      c语言
    • c语言指针的作用是什么
      C语言中的指针是一种特殊的数据类型,它用于存储变量的内存地址。指针的作用主要有以下几个方面:1. 内存管理:通过指针,可以动态地分配...
      99+
      2023-08-18
      c语言
    • c语言的指针数组是什么
      C语言的指针数组是由一组指针组成的数组。每个元素都是一个指向某种类型的指针。指针数组可以用来存储多个指针,这些指针可以指向同一类型的...
      99+
      2023-08-15
      c语言
    • 怎么用C++实现野指针和悬空指针
      本篇内容主要讲解“怎么用C++实现野指针和悬空指针”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C++实现野指针和悬空指针”吧!目录一、野指针二、悬空指针1 情况一2 情况二3 情况三野指...
      99+
      2023-06-20
    • C语言void指针的用法是什么
      C语言中的void指针是一种特殊的指针类型,可以用来表示任意类型的指针。具体来说,void指针可以指向任何数据类型的内存地址,但它本...
      99+
      2023-09-15
      C语言
    • c语言指针有什么作用
      C语言指针是一种特殊的变量类型,用于存储内存地址。它们的作用包括:1. 动态内存分配:指针可以用于动态地分配内存,以便在程序运行时创...
      99+
      2023-09-14
      c语言
    • C语言中指针有什么用
      这篇文章主要介绍C语言中指针有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!(壹)  敢问指针为何物 1.1  指针的概念在计算机科学中,指针(Pointer)是编程语言中的一个对...
      99+
      2023-06-29
    • C语言指针怎么用
      这篇文章主要为大家展示了“C语言指针怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言指针怎么用”这篇文章吧。一、字符指针在指针的类型中我们知道有一种指针类型为字符指针 char* 。思...
      99+
      2023-06-25
    • C语言中指针常量和常量指针的区别是什么
      这篇文章主要介绍了C语言中指针常量和常量指针的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中指针常量和常量指针的区别是什么文章都会有所收获,下面我们一起来看看吧。在面试中我们经常会被面试官问到...
      99+
      2023-06-26
    • C语言中指针有什么作用
      这篇“C语言中指针有什么作用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中指针有什么作用”文章吧。一、内存本质编程的...
      99+
      2023-06-08
    • C语言指针详解
      目录前言:复杂类型说明一、细说指针1.指针的类型2.指针所指向的类型3.指针的值----或者叫指针所指向的内存区或地址4 指针本身所占据的内存区二、指针的算术运算三、运算符&...
      99+
      2022-11-12
    • 详谈C语言指针
      #include<stdio.h> int main() { int a = 10; int b = 20; int* p = &a;//*定义指针变量...
      99+
      2022-11-12
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作