学习C语言的指针

有一阵没更新了,因为最近比较繁忙,所以更新比较慢,还在慢慢学习

话不多说,开始今天的内容,聊一聊C语言指针。


很多小伙伴可能会被指针这个名字吓到,觉得很难,实际上确实有点难,但是想学就一定能学会。

一、关于指针的理解

指针,在我通俗的理解下就是指向一块儿空间的地址,给你设置的变量找了块儿地方存储数据,进了门,空间里面存放着你的变量值,假设当你设置一个变量值 a 的时候,我们的计算机会找一个地方,生成一个门牌号,开辟一块儿空间,当你写入 int a = 0 的时候,那块儿空间就会放入你的定义的值,画个图给大家理解:

然后再继续聊,那么计算机开辟的空间有多大,它根据什么来确定开辟空间的大小呢?

其实答案很简单,就是我们常用的那些变量类型如下:

int                4个字节

char             1个字节

double         8个字节

float             4个字节

short            2个字节

long             4个字节

......

所以空间大小是由变量类型决定的。 

 二、指针的基础运用

指针 = &变量

*指针 = 指针

PS:指针也是一种变量类型,一般是4个字节,其具体表现形式如下所示:

int *               4个字节

char *            1个字节

double *        8个字节

float *            4个字节

short  *          2个字节

long *            4个字节

......

如果我们想得到你写的变量 a 的地址,那么就需要用到取地址操作符 & ,举个简单的例子:

那么怎么用指针呢,在放个图片供大家理解: 

下面这张图说明本质上,指针就相当于是地址: 

下图是基本的一个指针访问数据: 

 

三、野指针

1. 对野指针的理解:

对我而言,野指针就像是开辟了一个空间,但是具体在哪开辟,我们是完全不知道的,全靠随机,就不太友好

2.为什么会产生这种现象呢?

  • 可能是因为指针没有初始化(没有初始化,指针为随机值)
  • 指针越界访问(就像给你一个数组,你访问了不存在数组里地址)
  • 指针指向的空间释放(多出现在函数运用,形参实参那里)

    我们写代码要注意以上三条问题,避免出错


今天分享就到这里啦,根据情况大家可以下来多找一些资料理解

永远不要停下脚步,慢一点也不要止步不前。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/4876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于谷歌浏览器对于https的证书不通过校验的无法跳转的问题

谷歌浏览器对于https的证书问题会出现如下提示: 解决方法: 直接在页面输入 thisisunsafe 就能跳转了.

SpringCloud系列(21)--更换Ribbon的负载均衡模式

前言:在上一篇文章中我们介绍了关于Ribbon的知识点已经如果去应用Ribbon,而本章节内容则是关于如何去切换Ribbon的负载均衡模式。 以下是上篇文章的部分内容,可以再看下熟悉下,方便后续理解 Ribbon工作架构图 Ribbon的负载均衡模式…

Linux基本指令(3)

目录 时间相关的指令: 1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加好后接数个标记,其中常用的标记列表如下: 2.在设定时间方面: 3.时间戳: Cal指令: find指令&a…

机器学习:驱动现代交通运输革命的AI智慧引擎

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

C#中的扩展方法

C#中的扩展方法是一种非常实用的语言特性,它允许我们在不修改原有类定义的情况下,为其添加新的方法。这种机制极大地增强了代码的灵活性和可维护性,特别是在处理第三方库或无法直接修改源码的类时尤为有用。下面,我将详细阐述C#扩…

22 - Hadoop HA 高可用集群搭建、手动模式、自动模式以及HA模式集群

目录 1、HA 概述 2、HDFS-HA 集群搭建 2.1、HDFS-HA 核心问题 3、HDFS-HA 手动模式 3.1、环境准备 3.2、规划集群 3.3、配置 HDFS-HA 集群 3.4、启动 HDFS-HA 集群 4、HDFS-HA 自动模式 4.1、HDFS-HA 自动故障转移工作机制 4.2、HDFS-HA 自动故障转移的集群规划 4.…

使用CSS3 + Vue3 + js-tool-big-box工具,实现炫酷五一倒计时动效

时间过得真是飞速,很快又要到一年一度的五一劳动节啦,今年五天假,做好准备了吗?今天我们用CSS3 Vue3 一个前端工具库 js-tool-big-box来实现一个炫酷的五一倒计时动效吧。 目录 1 先制作一个CSS3样式 2 Vue3功能提前准备 3…

中科数安 | 电脑文件落地透明加密软件系统

#电脑文件加密软件# 中科数安的文件落地透明加密软件系统是一种先进的信息安全解决方案,旨在保护企业内部的敏感数据免受内外部威胁。 PC地址:www.weaem.com 该系统的特点和功能主要包括: 透明加密技术:系统自动对指定类型或目录…

Web 服务器解析漏洞 原理以及修复方法

漏洞名称 :Web服务器解析漏洞 漏洞描述: 服务器相关中间件存在一些解析漏洞,攻击者可通过上传一定格式的文件,被服务器的中间件进行了解析,这样就对系统造成一定危害。常见的服务器解析漏洞涉及的中间件有IIS&#x…

机器学习——构建决策树

第1关:返回分类次数最多的分类名称 import operatordef majorityCnt(classList):classCount {}for i in classList:if i not in classCount:classCount[i] 0classCount[i] 1sortedClassCount sorted(classCount.items(), keyoperator.itemgetter(1), reverseTr…

webpack前端性能优化- HappyPack多线程打包-打包速度提升n倍

HappyPack 由于运行在 Node.js 之上的 webpack 是单线程模型的,我们需要 webpack 能同一时间处理多个任务,发挥多核 CPU 电脑的威力 HappyPack 插件就能实现多线程打包,它把任务分解给多个子进程去并发的执行,子进程处理完后再把…

Linux通过命令查看系统时间

Linux通过命令查看系统时间 查看Linux系统的时间查看Linux系统的时区 查看Linux系统的时间 查看时间和日期 date设置时间和日期 例1:将系统日期设定成2024年11月11日的命令 命令 : date -s 11/11/2024例2:将系统时间设定成下午2点12分12秒…

Spring Boot应用部署 - War包部署

WAR包部署 将Spring Boot应用部署为WAR包并部署到外部Tomcat服务器上,需要进行一些特定的配置和步骤。以下是详细说明: 1. 修改打包方式 在项目的构建工具配置文件中(通常是pom.xml for Maven),将打包方式改为war。…

Linux Kernel入门到精通系列讲解(QEMU-虚拟化篇) 2.3 创建OpenSBI虚拟化环境

1.概述 上一章节我们已经添加了几个外设,这一章节我们打算为移植OpenSBI做环境准备,顺便修复一些BUG。什么是OpenSBI呢?OpenSBI 是RISC-V的一段BL2程序,他负责加载跳转BL3(U-boot)程序,它提供了许多开源的IP driver,方便用户快速移植,同时也提供了三种模式,具体我会…

【ARM Cache 系列文章 11.2 -- ARM Cache 组相联映射】

请阅读【ARM Cache 系列文章专栏导读】 文章目录 Cache 组相联映射组相联映射原理多路组相连缓存的优势多路组相连缓存的代价关联度(Associativity)上篇文章:【ARM Cache 系列文章 11.1 – ARM Cache 全相连 详细介绍】 Cache 组相联映射 ARM核心的主要缓存总是使用一组多路…

java开发常用工具类(持续更新...)

文章目录 一、apache.commons.lang31、StringUtils字符串工具类1.1、判断字符串是否为空1.2、截取字符串1.3、判断字符串内容类型 2、ObjectUtils工具类2.1、判断对象是否为空2.2、对象为null返回默认值 3、DateUtils日期工具类3.1、日期加减法 二、google.guava1、普通集合2、…

Python 全栈体系【四阶】(三十七)

第五章 深度学习 八、目标检测 3. 目标检测模型 3.1 R-CNN 系列 3.1.1 R-CNN 3.1.1.1 定义 R-CNN(全称 Regions with CNN features) ,是 R-CNN 系列的第一代算法,其实没有过多的使用“深度学习”思想,而是将“深度学习”和传统的“计算…

Mac NTFS磁盘读写工具选择:Tuxera还是Paragon?

在Mac上使用NTFS磁盘时,选择一款合适的读写工具至关重要。Tuxera和Paragon作为两款备受推崇的Mac NTFS磁盘读写工具,都能够帮助用户轻松地实现NTFS格式的读写。那么,面对这两款功能强大的工具,我们应该如何选择呢?本文…

CACTER AI实验室:AI大模型在邮件安全领域的应用

随着人工智能技术的飞速发展,AI已经深入到生活的各个领域。AI大模型在邮件安全领域展现出巨大潜力,尤其是反钓鱼检测上的应用,正逐渐展现出其独特的价值。 4月24日,CACTER AI实验室高级产品经理刘佳雄在直播交流会上分享了CACTER …

c语言——二叉树

目录 目录 二叉树关键概念理解 一颗拥有1000个结点的树度为4,则它的最小深度是? 那么对于二叉树,只掌握这些是远远不够的,我们还需要掌握几个最基本的经典问题, 求二叉树大小 求叶子结点个数 求深度 求第k层的…