我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言野指针是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    C语言野指针是什么

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

    下载Word文档

    猜你喜欢

    C语言野指针是什么

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

    C语言中野指针是什么

    这篇文章将为大家详细讲解有关C语言中野指针是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。(壹) 行经旅途遇猛虎 -- “野指针”概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确
    2023-06-29

    C语言的野指针与空指针是什么

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

    C语言指针类型与野指针引起的原因

    我们C语言独一无二的特色——指针。说起指针,可能很多人都是还没学就已经听说过其鼎鼎大名,因为有很多传言和玩笑什么的说指针很难,其实大家大可不必有畏难情绪,指针这个东西虽然确实有一定难度,但是这是基于其优秀的灵活性而衍生的一点小问题
    2023-02-11

    c语言二级指针是什么

    C语言中的二级指针是指一个指针变量的指针。它是指向指针的指针,也被称为指向指针的指针。可以简单理解为指向指针的指针变量。例如,有一个int类型的变量x,一个指向int类型变量x的指针变量p,再有一个指向指针变量p的指针变量q。则q就是一个二
    c语言二级指针是什么
    2024-02-29

    c语言指针的作用是什么

    C语言中的指针是一种特殊的数据类型,它用于存储变量的内存地址。指针的作用主要有以下几个方面:1. 内存管理:通过指针,可以动态地分配和释放内存,从而实现灵活的内存管理。例如,可以使用指针来动态创建数组、链表等数据结构。2. 传递参数:通过指
    2023-08-18

    c语言指针的概念是什么

    C语言中的指针是一个变量,用于存储另一个变量的地址。简单来说,指针就是指向内存中某个位置的变量。指针的概念可以帮助我们实现一些高级的内存操作,例如动态内存分配、数据结构的实现等。通过指针,我们可以直接访问和修改内存中的数据,而不需要通过变量
    2023-09-16

    c语言的指针数组是什么

    C语言的指针数组是由一组指针组成的数组。每个元素都是一个指向某种类型的指针。指针数组可以用来存储多个指针,这些指针可以指向同一类型的数据或不同类型的数据。使用指针数组可以方便地操作和管理多个指针,特别是在需要处理多个动态分配的内存块或多个字
    2023-08-15

    c语言中指针的概念是什么

    在C语言中,指针是一个变量,其值为内存地址。它可以指向内存中的某个位置,存储了该位置的值或者其他变量的地址。通过指针,可以直接访问和操作内存中的数据。指针的概念为程序提供了一种间接访问和处理数据的方式,可以允许程序在运行时动态地分配和释放
    c语言中指针的概念是什么
    2024-02-29

    C语言void指针的用法是什么

    C语言中的void指针是一种特殊的指针类型,可以用来表示任意类型的指针。具体来说,void指针可以指向任何数据类型的内存地址,但它本身不知道该地址所存储的数据类型,因此在使用void指针时需要进行类型转换。使用void指针的主要用途如下:1
    2023-09-15

    怎么用C++实现野指针和悬空指针

    本篇内容主要讲解“怎么用C++实现野指针和悬空指针”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C++实现野指针和悬空指针”吧!目录一、野指针二、悬空指针2.1 情况一2.2 情况二2.3
    2023-06-20

    c语言指针有什么作用

    C语言指针是一种特殊的变量类型,用于存储内存地址。它们的作用包括:1. 动态内存分配:指针可以用于动态地分配内存,以便在程序运行时创建和管理数据结构。这使得程序可以根据需要分配和释放内存,提高内存使用效率。2. 传递参数:指针可以作为函数的
    2023-09-14

    c语言指针的使用方法是什么

    在C语言中,指针是一个特殊的变量,它存储了一个内存地址的值。指针的主要作用是对内存中的数据进行直接操作,而不需要进行数据的拷贝。指针的使用方法如下:定义指针变量:在定义指针变量时,需要指定指针的数据类型,例如int型指针变量的定义为:int
    c语言指针的使用方法是什么
    2024-03-01

    c语言二级指针的用处是什么

    C语言二级指针用来存储指向指针的指针,也称为指向指针的指针。它的主要用途是在函数调用中传递指针的指针,以便在函数内部可以修改指针指向的内容。通过使用二级指针,可以实现对指针所指向的内存区域进行操作,而不是对指针本身进行操作。这种技术在动态内
    c语言二级指针的用处是什么
    2024-03-12

    C语言中指针有什么用

    这篇文章主要介绍C语言中指针有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!(壹) 敢问指针为何物 1.1 指针的概念在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(
    2023-06-29

    C语言中指针常量和常量指针的区别是什么

    这篇文章主要介绍了C语言中指针常量和常量指针的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中指针常量和常量指针的区别是什么文章都会有所收获,下面我们一起来看看吧。在面试中我们经常会被面试官问到
    2023-06-26

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录