c入门第十篇——指针入门

一句话来说: 指针就是存储了内存地址值的变量。
在前面讨论传值和传址的时候,我们就已经开始使用了指针来传递地址。
在正式介绍指针之前,我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道,每个房子都有自己的地址,叫内存地址。在大多数计算机使用 8 位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。下图简单展示了一下内存编址。
在这里插入图片描述
在C语言中,每个变量都存储在内存中的一个位置上,这个位置可以通过地址来访问。
如何获取变量的地址呢?用取址运算符 &来获取。
那获取的这个地址存储在哪里呢?指针。一个指针变量就是存储了内存地址值的变量。
有了地址之后,如何读取地址上的数据呢?可以用解引用运算符 * 来获取。
总结来说有几个重要的概念:
1. 内存地址:指示了变量存储在内存中的确切位置。
2. 指针变量:存储了内存地址值的变量。
3. 取址运算符(&):用取址运算符 & 来获取一个变量的内存地址。
4. 解引用运算符(*):用解引用运算符 * 来获取指向地址上存储的数据。
示例:

int var = 10; // 一个普通的整数变量
int *ptr = &var; // 一个指针变量,存储了var的地址printf("var的值: %d\n", var); // 输出 var 的值
printf("var的地址: %p\n", &var); // 输出 var 的地址
printf("ptr存储的地址: %p\n", ptr); // 输出 ptr 存储的地址(即 var 的地址)
printf("ptr存储的地址: 0x%lx\n", ptr); // 输出 ptr 存储的地址(即 var 的地址)
printf("ptr解引用的值: %d\n", *ptr); // 通过 ptr 指针解引用访问 var 的值

在这个示例中,var 是一个普通的整数变量,ptr 是一个类型为 int *(指向int的指针)的指针变量,它存储了 var 变量的地址。通过 *ptr 我们可以访问 var 变量的值,尽管我们并没有直接使用 var 这个变量名。
总的来说指针的用途如下:
● 指针存储内存地址。
● 指针可以间接访问和操作内存中的数据。
● 指针可以使函数能够修改接收到的变量(传址,上一节讲述到)。
● 指针可以用于动态内存分配。
在C语言中,任何一个变量和函数类型,都可以有对应的指针。
这里只是简单介绍了一下指针的概念,指针与数组的关系比较密切,关于指针的使用,我们在后续介绍数组的时候,会详细介绍。

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

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

相关文章

ACK One Argo工作流:实现动态 Fan-out/Fan-in 任务编排

作者:庄宇 什么是 Fan-out Fan-in 在工作流编排过程中,为了加快大任务处理的效率,可以使用 Fan-out Fan-in 任务编排,将大任务分解成小任务,然后并行运行小任务,最后聚合结果。 由上图,可以使…

13. UE5 RPG限制Attribute的值的范围以及生成结构体

前面几章,我们实现了通过GameplayEffect对Attribute值的修改,比如血量和蓝量,我们都是有一个最大血量和最大蓝量去限制它的最大值,而且血量和蓝量最小值不会小于零。之前我们是没有实现相关限制的,接下来,我…

React实例之完善布局菜单(一)

今天我们来用所学的知识来做一个布局菜单的组件, 针对这个组件我之前写过一个教程 React之布局菜单-CSDN博客,那个呢比较基础,这节课算是对那个教程的一个扩展和补充。这个实例讲完,这个系列就算告一段落了。先看效果 这个教程要求对React知识…

猫头虎分享已解决Bug ‍ || TypeError: Object of type ‘int64‘ is not JSON serializable

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

redis特点

一、redis线程模型有哪些,单线程为什么快? 1、IO模型维度的特征 IO模型使用了多路复用器,在linux系统中使用的是EPOLL 类似netty的BOSS,WORKER使用一个EventLoopGroup(threads1) 单线程的Reactor模型,每次循环取socket中的命令…

一篇文章理解时间复杂度和空间复杂度

今天也是很开心的学到了数据结构,也是打算把我自己对知识的理解给写出来了。第一篇数据结构开始咯。开始之前我们先理解一个概念。 什么是算法效率? 算法效率是指算法执行的速度或完成任务所需的资源(如时间和空间)的度量。它通…

字节3面真题,LeetCode上hard难度,极具启发性题解

文章目录 🚀前言🚀LeetCode:41. 缺失的第一个正整数🚀思路🚀整个代码思路串一下🚀Code 🚀前言 铁子们好啊!阿辉来讲道题,这道题据说是23年字节3面真题,LeetC…

jmeter的简单使用

1、打开jmeter 打开Jmeter 安装包,进入\bin 中,找到“ApacheJMeter.jar”或"jmeter.bat", 双击打开即可 2、建立线程组 如下图所示,右击TestPlan,点击ADD->Threads(Users)->ThreadGroup 线程组页面分析&#xf…

数字图像处理实验记录六(图像的傅里叶变换和频域处理)

前言: 一、基础知识 1,傅里叶变换是什么 傅里叶变换是一种线性积分变换,通俗来说,通过傅里叶变换就是把一段信号分解成若干个简谐波。 二、实验要求 1.产生一幅如图所示亮块图像f(x,y)(256256 大小、…

【npm】修改npm全局安装包的位置路径

问题 全局安装的默认安装路径为:C:\Users\admin\AppData\Roaming\npm,缓存路径为:C:\Users\admin\AppData\Roaming\npm_cache(其中admin为自己的用户名)。 由于默认的安装路径在C盘,太浪费C盘内存啦&#…

网络协议与攻击模拟_15FTP协议

了解FTP协议 在Windows操作系统上使用serv-U软件搭建FTP服务 分析FTP流量 一、FTP协议 1、FTP概念 FTP(文件传输协议)由两部分组成:客户端/服务端(C/S架构) 应用场景:企业内部存放公司文件、开发网站时利…

[ChatGPT们】ChatGPT 如何辅助编程初探

主页:元存储的博客 全文 9000 字, 原创请勿转载。 我没有写过诗,但有人说我的代码像诗一样优雅 -- 雷军 图片来源:https://www.bilibili.com/video/BV1zL411X7oS/ 1. 引言 作为一个程序员,我们不仅要熟悉各种编程语…

C语言实现memcpy、memmove库函数

目录 引言一、库函数介绍二、库函数详解三、源码实现1.memcpy源码实现2.memmove源码实现 四、测试1.memcpy函数2.memmove函数 五、源码1.memcpy源码2.memmove源码 六、参考文献 引言 关于memcpy和memmove这两个函数,不论是算法竞赛还是找工作面试笔试,对…

百卓Smart管理平台 uploadfile.php 文件上传漏洞【CVE-2024-0939】

百卓Smart管理平台 uploadfile.php 文件上传漏洞【CVE-2024-0939】 一、 产品简介二、 漏洞概述三、 影响范围四、 复现环境五、 漏洞复现手动复现小龙验证Goby验证 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工…

vue3集成bpmn

文章目录 前言一、依赖二、汉化配置1.引入文件2.样式文件 总结 前言 vue3 集成bpmn 配置工作流 一、依赖 "bpmn-js": "^7.3.1", "bpmn-js-properties-panel": "^0.37.2", "bpmn-moddle": "^6.0.0", "camu…

【学网攻】 第(23)节 -- PPP协议

系列文章目录 目录 系列文章目录 文章目录 前言 一、PPP协议是什么? 二、实验 1.引入 实验目的 实验背景你是某公司的网络管理员,现在需要与另一个公司进行通信,需要你配置PPP协议保证双方发送的人是真正的而非黑客 技术原理 实验步骤新建Pack…

专业排版设计软件:QuarkXPress 2024 for mac中文激活版

QuarkXPress 2024 for Mac是一款功能强大、易于使用、高质量输出的专业排版软件。无论您是出版业的专家还是初学者,都可以通过QuarkXPress 2024轻松创建出令人惊叹的出版物。 软件下载:QuarkXPress 2024 for mac中文激活版下载 QuarkXPress 2023 for Mac…

牛客网SQL264:查询每个日期新用户的次日留存率

官网链接: 牛客每个人最近的登录日期(五)_牛客题霸_牛客网牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。 有一个登录(login。题目来自【牛客题霸】https://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8?tpId82 …

前后端数据校验

前端校验内容 前端开发中的必要校验,可以保证用户输入的数据的准确性、合法性和安全性。同时,这些校验也有助于提供良好的用户体验和防止不必要的错误提交到后端。 1、必填字段校验: 对于必填的字段,需确保用户输入了有效的数据…

双非本科准备秋招(19.2)—— 设计模式之保护式暂停

一、wait & notify wait能让线程进入waiting状态,这时候就需要比较一下和sleep的区别了。 sleep vs wait 1) sleep 是 Thread 方法,而 wait 是 Object 的方法 2) sleep 不需要强制和 synchronized 配合使用,但 wait 强制和 s…