学习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智慧引擎

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

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…

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层的…

Window11安装vim编辑器

我们在做git操作的时候,很多文字编辑工作会默认打开 Vim 编辑器来进行操作。 Vim 是一个高度可配置的文本编辑器,旨在让创建和更改任何类型的文本变得非常高效。大多数 UNIX 系统和 Apple OS X 都将它作为vi包含在内,用惯了Linux中的Vim编辑器…

长江证券:地产需求,去哪儿呢?

核心观点: 1.来有影,去无踪。无论是价格还是销量,年初以来房地产市场进一步深度调整。现实的直观感受是,住房需求锐减以及二手房供给骤增。如此短期变化,能否用人口、城镇化等长期因素来解释?是否能通过不…

“地表最强”文生视频模型?Sora 背后有何秘密?

自 2022 年底 ChatGPT 的横空出世,人工智能再度成为全世界的焦点,基于大语言模型(LLM)的 AI 更是人工智能领域的“当红炸子鸡”。此后的一年,我们见证了 AI 在文生文、文生图领域的飞速进展,但在文生视频领…

【C++】学习笔记——内存管理

文章目录 二、类和对象20. 友元1. 友元函数2.友元类 21. 内部类22. 匿名对象23. 拷贝对象时的一些编译器优化 三、内存管理1. C/C内存分布2. C语言中动态内存管理方式:malloc/calloc/realloc/free3. C内存管理方式 未完待续 二、类和对象 20. 友元 1. 友元函数 我…

溪谷软件:游戏联运有多简单?

游戏联运,即游戏联合运营,是一种游戏运营模式,涉及到多个平台或公司共同推广和运营同一款游戏。对于开发者而言,游戏联运的简化程度可能因具体情况而异,但以下是一些因素,使得游戏联运在某种程度上变得更加…

认识Linux及一些基本

目录 linux简介: 1. 发展史 UNIX发展的历史 Linux发展历史 2. 开源 3. 企业应用现状 Linux在服务器领域的发展 Linux在桌面领域的发展 Linux在移动嵌入式领域的发展 Linux在云计算/大数据领域的发展 4. 发行版本 Debian Ubuntu 红帽企业级Linux Cent…

金荣中国模拟账户有什么用?实战演练,助力投资者稳健起步

在投资市场中,新手投资者往往面临着缺乏经验、不熟悉市场规则等问题,这些都可能导致投资者在真实交易中遭受损失。为了解决这个问题,金荣中国为投资者提供了一个模拟账户,那么金荣中国模拟账户有什么用?功能旨在通过实…

数组中的区别与例外

数组名可以表示整个数组,取出的是整个数组的地址 有两个例外: 1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。 2.&数组名,数组名能表示首元…