当前位置: 首页 > news >正文

C_内存 内存地址概念

1. 计算机内存的基本概念

计算机的内存(RAM,随机存取存储器)是用来存储程序运行时的数据和指令的地方。内存被划分为许多小单元,每个单元有一个唯一的地址,这些地址从0开始编号。

  • 内存单元:每个内存单元通常是一个字节(8位),用来存储一个字符或部分整数。
  • 内存地址:每个内存单元都有一个唯一的地址,用于标识它。例如,地址0x1000表示内存中某个特定位置。

2. C语言中的内存模型

C语言中的内存可以大致分为以下几个区域:

(1)代码区(Text Segment)

  • 存储程序的机器指令(即编译后的代码)。
  • 这部分内存是只读的,防止程序意外修改自己的指令。

(2)全局/静态区(Data Segment) 

  • 存储全局变量和静态变量。
  • 又分为两部分:
  • 初始化数据区:存储已初始化的全局变量和静态变量。
  • 未初始化数据区(BSS段):存储未初始化的全局变量和静态变量。

(3)堆区(Heap)

  • 用于动态内存分配(如malloccallocrealloc等函数分配的内存)。
  • 程序员需要手动管理堆区的内存分配和释放(使用free函数)。
  • 堆的大小不固定,可以根据需要增长。

(4)栈区(Stack) 

  •  用于存储函数调用时的局部变量、函数参数、返回地址等。
  • 栈的大小是固定的,通常较小。
  • 栈是自动管理的,当函数调用结束时,栈上的局部变量会自动销毁。

3. 指针与内存地址的关系

指针是C语言中直接操作内存的核心工具。指针本质上是一个变量,它存储的是另一个变量的内存地址。

 (1)指针的基本概念

  • 指针变量本身占用内存空间(通常是4字节或8字节,取决于系统架构)。
  • 指针变量的值是一个内存地址。

 (2)指针与内存地址的关系    

  

4.通过*解引用指针p,可以直接访问和修改变量a存储在内存中的数值(数据内容),只是改变了该变量a在内存地址中存储的数据内容,而变量a的内存地址本身是保持不变的。

(1)变量在内存中的内存地址 vs  存储值的关系 

 变量在内存中的内存地址

  • 每个变量在声明时  系统为变量分配了一块内存空间, 这块内存空间有一个唯一的固定的地址(0000007BF96FF5D4)   在变量的生命周期内该内存中地址是固定不变的,不会因为值的变化而改变。并且在这块内存空间(也可以叫这个对应的内存地址上)中存储了变量的初始值(比如10)。
  • 内存地址是用来标识变量在内存中的位置。每个变量在内存中都有一个唯一的内存地址。
  • 而存储的数值是该“位置”编号中存放的内容。
  • 修改这个变量的数值并不会改变该变量的内存地址编号。

    存储的值

  • 内存地址对应的存储单元中存放的具体数据。对于变量a来说,存储值就是10
  • 可以通过直接访问变量或通过指针解引用来修改。 

  图解说明

 

 

(2)示例代码

    

  /*系统为变量a2分配了一块内存空间, 这块内存空间有一个唯一的地址(0000007BF96FF5D4),并且在这块内存(也可以叫这个对应的内存地址上)中存储了变量的初始值(比如10)。*/int a2 = 10;  // 声明并初始化变量aint* p_a2 = &a2;  // 定义一个指针p,指向变量a2的地址// 打印初始状态 printf("变量2a的初始值=%d\n", a2);  //变量2a的初始值=10printf("变量a2在内存中的内存地址编号=%p\n", (void*)&a2); //变量a2在内存中的内存地址编号=0000007BF96FF5D4//通过*解引用指针p,可以直接访问和修改变量a2   存储在内存地址 (0000007BF96FF5D4)上对应的数值(数据内容)从10改为20,此时的内存地址没有变,但该内存地址上存储的值已经变为20* p = 20;  // 相当于 a2 = 20;// 打印修改后的状态printf("变量a2的修改后值=%d\n", a2);  //变量a2的修改后值=10printf("变量a2在内存中的地址编号=%p\n", (void*)&a2); //变量a2在内存中的地址编号=0000007BF96FF5D4

 

(3)通过以上实例代码,为什么内存地址不变?

  • 变量在内存里的内存地址是由编译器和操作系统在程序运行时分配的,并且在变量的生命周期内是固定不变的。
  • 修改值只会影响内存里单元中的内容(数值),而不会改变变量本身的在内存里的内存地址。

内存地址是变量的位置标识,而值是该位置中存储的内容。修改值只是改变了内容,而位置本身不会发生变化。

相关文章:

C_内存 内存地址概念

1. 计算机内存的基本概念 计算机的内存(RAM,随机存取存储器)是用来存储程序运行时的数据和指令的地方。内存被划分为许多小单元,每个单元有一个唯一的地址,这些地址从0开始编号。 内存单元:每个内存单元通…...

Rust重定义数据库内核:从内存安全到性能革命的破界之路

Rust语言正在颠覆传统数据库开发范式,其独特的所有权系统与零成本抽象能力,为攻克C/C时代遗留的内存泄漏、并发缺陷等顽疾提供全新解决方案。本文通过TiKV、Materialize等新一代数据库核心组件的实践案例,剖析Rust如何重塑存储引擎、查询优化…...

tree 显示到二级目录

要使用 tree 命令显示到二级目录,可以通过 -L 参数指定目录层级。具体命令如下: tree -L 2 参数说明: -L 数字:控制显示的目录深度。-L 2 表示显示到第二级目录(即当前目录下的直接子目录及其内容)。 示例输出: 复制 . ├── dir1 │ ├── file1.txt │ └─…...

UE5 在UE中创建骨骼动画

文章目录 创建动画的三种方式修改骨骼动画 创建动画的三种方式 方法一 打开一个已有的动画,左上角“创建资产/创建动画/参考姿势” 这将创建一个默认的A字形的骨骼,不建议这么做 方法二 打开一个已有的动画,左上角“创建资产/创建动画/当前…...

工业相机使用笔记

目前工业相机有多种分类方式,以下是基于不同原理和特点的类别总结: 按维度分类 2D相机: 原理:通过镜头将二维平面上的物体成像在图像传感器上,传感器上的像素点阵列捕捉物体的光信号,并转换为电信号或数字…...

深度兼容性测试和自助兼容性测试的区别,如何正确的选择?

泽众云经过几年业务快速发展,特别是泽众云兼容性测试服务已成为市场热门供应商之一,也根据用户不同需求推出了超高性价比服务,主要有深度兼容性测试和自助兼容性测试两种方式。2025年上半云真机平台的机型已升级到1000,全面覆盖了…...

Windows下安装depot_tools

一、引言 Chromium和Chromium OS使用名为depot_tools的脚本包来管理检出和审查代码。depot_tools工具集包括gclient、gcl、git-cl、repo等。它也是WebRTC开发者所需的工具集,用于构建和管理WebRTC项目。本文介绍Windows系统下安装depot_tools的方法。 二、下载depo…...

学术分享:基于 ARCADE 数据集评估 Grounding DINO、YOLO 和 DINO 在血管狭窄检测中的效果

一、引言 冠状动脉疾病(CAD)作为全球主要死亡原因之一,其早期准确检测对有效治疗至关重要。X 射线冠状动脉造影(XCA)虽然是诊断 CAD 的金标准,但这些图像的人工解读不仅耗时,还易受观察者间差异…...

NLP高频面试题(四十一)——什么是 IA3 微调?

随着大型语言模型的广泛应用,如何高效地将这些模型适配到特定任务中,成为了研究和工程实践中的重要课题。IA3(Infused Adapter by Adding and Adjusting)微调技术,作为参数高效微调的一种新颖方法,提供了在保持模型性能的同时,显著减少可训练参数数量的解决方案。 IA3 …...

STM32 模块化开发指南 · 第 3 篇 环形缓冲区 RingBuffer 模块设计与单元测试

本文是《STM32 模块化开发实战指南》第 3 篇,聚焦于“如何设计一个高性能、稳定、安全的环形缓冲区模块”。我们将从基本结构讲起,逐步完成接口定义、边界处理、API 实现与单元测试,最终实现一个可移植、线程安全、可嵌入 UART/BLE/协议模块的通用 RingBuffer。 一、RingBuf…...

软件测试岗位:IT行业中的质量守护者

在当今数字化飞速发展的IT行业,软件如同空气般无处不在,从日常的手机应用到复杂的企业级管理系统,软件的稳定性和可靠性至关重要。而软件测试岗位的从业者,就像是软件世界的质检员,精心守护着软件的质量。 一、软件测…...

单片机方案开发 代写程序/烧录芯片 九齐/应广等 电动玩具 小家电 语音开发

在电子产品设计中,单片机(MCU)无疑是最重要的组成部分之一。无论是消费电子、智能家居、工业控制,还是可穿戴设备,小家电等,单片机的应用无处不在。 单片机,简而言之,就是将计算机…...

恐龙专利及商标维权行动,已获批TRO并冻结资金

2025年3月30日,原告Shenzhen xingyin technology co.,Ltd.,现化名为Shenzhen Z Tech Co., Ltd.委托kemet律所发起维权。目前该案件已获批TRO临时禁令,涉案账户资金已被冻结,案件详情如下: 案件基本情况:起…...

【北京市小客车调控网站-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...

Vue 3中的 setup

Vue 3引入了Composition API,其中setup函数是这一新API的核心部分。setup函数为开发者提供了一种更灵活、更模块化的方式来组织组件逻辑。以下是关于Vue 3中setup函数的详细解释: 1. 基本概念 setup函数是组件内使用Composition API的入口点。它是一个…...

2025年实用新型专利审查周期要多久?

申请实用新型专利时,审查周期是申请人最关心的问题之一。尤其是近几年国家知识产权局不断优化流程,审查速度是否有变化?2025年申请需要等多久?本文结合最新政策和实际案例,为你全面解析! 一、实用新型专利…...

使用Python建立双缝干涉模型

引言 双缝干涉实验是物理学中经典的实验之一,它展示了光的波动性以及量子力学的奇异性。实验结果表明,当光或粒子通过两条狭缝时,它们会产生干涉现象,形成明暗相间的条纹图案。这种现象不仅说明了光的波动性,还揭示了量子力学的核心思想——粒子具有波动性。今天,我们将…...

路由交换网络专题 | 第二章 | RIP | OSPF | 路由聚合 | 路由过滤 | 静默接口

拓扑图 (1)作为企业网络边界设备,AR1 上配置什么命令,可以使 OSPF 域内所有路由都会有指向自己的默认路由。默认路由的优先级是多少。如果 OSPF 域内其他路由器同样有到达外网的路径,且优于通过 AR1 到达外网&#xff…...

python 语言 设计模式

python 语言 设计模式 设计模式是指在软件开发过程中,针对反复出现的问题所总结归纳出的通用解决方案。以下是一些常见的Python语言设计模式: 目录 python 语言 设计模式创建型模式结构型模式行为型模式创建型模式 单例模式 定义:保证一个类只有一个实例,并提供一个全局访…...

银行业务发展历史

银行业务发展历史 银行业务的发展可以追溯到古代,但其现代形式的发展可以追溯到中世纪。以下是银行业务发展的主要历史阶段: 1. 古代和中世纪时期 特点:商人提供贷款和存款服务,充当中间人转移资金,发行纸币作为支付…...

JAVA中多线程的基本用法

文章目录 一、基本概念(一)进程控制块PCB(二)并行和并发(三)进程调度1.进程的状态2.优先级3.记账信息4.上下文 (四)进程和线程1.概述2.线程为什么比进程更轻量3.进程和线程的区别和联…...

健康与好身体笔记

文章目录 保证睡眠饭后百步走,活到九十九补充钙质一副好肠胃肚子咕咕叫 健康和工作的取舍 以前对健康没概念,但是随着年龄增长,健康问题凸显出来。 持续维护该文档,健康是个永恒的话题。 保证睡眠 一是心态要好,沾枕…...

如何下载谷歌浏览器增强版(扩展支持版)

在日常浏览和工作中,Chrome 浏览器因其强大的性能和丰富的扩展插件,成为全球范围内使用最广泛的浏览器之一。然而,对于需要进行深度扩展管理或需要稳定扩展环境的用户来说,标准版的 Google Chrome 可能在某些方面仍显不足。这时候…...

TDDMS分布式存储管理系列文章--分片/分区/分桶详解

友情链接: 星环分布式存储TDDMS大揭秘(一)分布式存储技术推出背景以及当前存在的挑战TDDMS是什么 前情提要 通过上个系列的文章我们了解到了各节点数据副本间通过一致性算法确保每次写入在响应客户端请求之前至少被多数节点(N/2…...

Spring Boot(九十):集成SSE (Server-Sent Events) 服务器实时推送

1 SSE简介 Server-sent Events(SSE) 是一种基于 HTTP 协议的服务器推送技术,它允许服务器主动向客户端发送数据。与 WebSocket 不同,SSE 是单向通信,即服务器可以主动向客户端推送数据,而客户端只能接收数据。 2 SSE特点 单向通信:SSE 是服务器向客户端的单向推送,客户…...

ubuntu22.04安装ROS2 humble

参考: https://zhuanlan.zhihu.com/p/702727186 前言: 笔记本安装了ubuntu20.04安装ros一直失败,于是将系统升级为ununut22.04,然后安装ros,根据上面的教程,目前看来是有可能成功的。 系统升级为ununut…...

力扣第206场周赛

周赛链接:竞赛 - 力扣(LeetCode)全球极客挚爱的技术成长平台​​​​​​ 1. 二进制矩阵中的特殊位置 给定一个 m x n 的二进制矩阵 mat,返回矩阵 mat 中特殊位置的数量。 如果位置 (i, j) 满足 mat[i][j] 1 并且行 i 与列 j 中…...

C++17 主要更新

C17 主要更新 C17 是继 C14 之后的重要标准更新,引入了许多提升开发效率、简化代码和增强性能的特性。以下是 C17 的主要更新,按类别分类: 1. 语言核心特性 结构化绑定(Structured Bindings) 解构元组、结构体或数组…...

k8s master节点部署

一、环境准备 1.主机准备 192.168.10.100 master.com master 192.168.10.101 node1.com node1 192.168.10.102 node2.com node2 互信 时间同步 关闭防火墙 关闭selinux 2.创建/etc/sysctl.d/k8s.conf,添加如下内容 cat > /etc/sysctl.d/k8s.conf <<EOF net.br…...

YOLO学习笔记 | YOLOv8 全流程训练步骤详解(2025年4月更新)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 这里写自定义目录标题 一、数据准备1. 数据标注与格式转换2. 配置文件生…...

centos7.9 升级 gcc

本片文章介绍如何升级gcc&#xff0c;centos7.9 仓库默认的gcc版本为&#xff1a;4.8.5 4.8.5-44) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY…...

Linux基本指令

Linux目录结构 Linux的目录结构是一个树形结构。Windows系统可以拥有多个盘符&#xff0c;如C盘、D盘、E盘。而Linux没有盘符这个概念&#xff0c;只有一个根目录/,所有文件都在它下面。如下图所示&#xff1a; Linux路径的描述方式 在Linux系统中&#xff0c;路径之间的层级…...

Google A2A协议,是为了战略性占领标准?

一、导读 2025 年 4 月 9 日&#xff0c;Google 正式发布了 Agent2Agent&#xff08;A2A&#xff09;协议。 A2A 协议致力于打破智能体之间的隔阂&#xff0c;让它们能够跨越框架和供应商的限制&#xff0c;以一种标准化、开放的方式进行沟通与协作 截止到现在&#xff0c;代…...

每日一题(小白)暴力娱乐篇29

题目比较简单&#xff0c;主要是判断条件这块&#xff0c;一定要注意在奇数的位置和偶数的位置标记&#xff0c;若奇数位为奇数偶数位为偶数才能计数加一&#xff0c;否则都是跳过。 ①接收数据n ②循环n次&#xff0c;拆解n&#xff0c;每次拆解记录ans ③拆解n为若干次x&a…...

瀚天天成闯港交所上市:业绩波动明显,十分依赖少数客户和供应商

撰稿|张君 来源|贝多财经 近日&#xff0c;瀚天天成电子科技&#xff08;厦门&#xff09;股份有限公司&#xff08;下称“瀚天天成”&#xff09;递交招股书&#xff0c;报考港交所主板上市。据贝多财经了解&#xff0c;瀚天天成曾计划在上海证券交易所科创板上市&#xff0…...

全国产压力传感器常见的故障有哪些?

全国产压力传感器常见的故障如哪些呢&#xff1f;来和武汉利又德的小编一起了解一下&#xff0c;主要包括以下几类&#xff1a; 零点漂移 表现&#xff1a;在没有施加压力或处于初始状态时&#xff0c;传感器的输出值偏离了设定的零点。例如&#xff0c;压力为零时&#xff0c…...

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络&#xff08;CNN&#xff09;基础&#xff1a;从LeNet到ResNet 一、前言二、卷积神经网络基础概念​2.1 卷积层​2.1.1 卷积运算原理​2.1.2 卷积核的作用与参数​ 2.2 池化层​2.2.1 最大池化与平均池化​2.2.2 池化层的优势与应用​ 2.3 全连接层​2.3…...

在封装DLL时,避免第三方命名空间的依赖方法[PIMPL模式技术指南]

1. 概述 PIMPL(Pointer to IMPLementation)模式是C++中实现信息隐藏和二进制兼容性的重要设计范式,通过创建实现细节的私有封装层,有效隔离接口与实现。本文档详细阐述其核心原理、现代实现方式和典型应用场景。 2. 核心架构 2.1 经典结构 // 头文件(widget.h) class Wid…...

镜舟科技亮相 2025 中国移动云智算大会,展示数据湖仓一体创新方案

4月10-11日&#xff0c;2025 中国移动云智算大会在苏州金鸡湖国际会议中心成功举办。大会以“由云向智&#xff0c;共绘算网新生态”为主题&#xff0c;汇聚了众多行业领袖与技术专家&#xff0c;共同探讨了算力网络与人工智能的深度融合与未来发展趋势。 作为中国领先的企业级…...

通过Python实现定时重启H3C AP设备

一、背景 因为H3C的AP设备老化&#xff0c;网络出现高延迟、高丢包率&#xff0c;需要隔一段时间去重启AP后恢复。但是由于白天在使用无法进行重启&#xff0c;并且容易遗忘等用户反馈又太晚了&#xff0c;但是AC版本太老没有定时重启功能&#xff0c;于是通过Python做了自动重…...

火山RTC 4 音视频引擎 IRTCVideo,及 音视频引擎事件回调接口 IRTCVideoEventHandler

一、IRTCVideo、IRTCVideoEventHandler 音视频引擎 IRTCVideo&#xff0c;及 音视频引擎事件回调接口 IRTCVideoEventHandler 负责音视频管理、创建房间/获得房间实例 1、创建引擎、及事件回调示例 如&#xff1a; void VideoConfigWidget::initRTCVideo() {m_handler.res…...

Matlab 考虑电机激励力的整车垂向七自由度模型参数研究

1、内容简介 Matlab 201-考虑电机激励力的整车垂向七自由度模型参数研究 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Matlab 三容水箱系统故障诊断算法研究

1、内容简介 Matlab 190-三容水箱系统故障诊断算法研究 可以交流、咨询、答疑 2、内容说明 略 其次&#xff0c;对 DTS200 三容水箱系统进行机理建模&#xff0c;可分为对象建模和故障 建模&#xff0c;搭建了水箱系统的 SIMULINK 模型并建立了基于 Taylor 展开及 T-…...

Mac学习使用全借鉴模式

Reference https://zhuanlan.zhihu.com/p/923417581.快捷键 macOS 的快捷键组合很多&#xff0c;相应的修饰键就多达 6 个&#xff08;Windows 系统级就 4 个&#xff09;&#xff1a; Command ⌘ Shift ⇧ Option ⌥ Control ⌃ Caps Lock ⇪ Fn 全屏/退出全屏 command con…...

Arrays.asList() 隐藏的陷阱

在Java中&#xff0c;我们经常需要将数组转换为List来方便地进行操作。Arrays.asList()方法是一种常见的方式&#xff0c;但是它存在一个不太常见但需要注意的坑。 本文将深入探讨Arrays.asList()的使用&#xff0c;揭示其中的陷阱&#xff0c;并提供解决方案。 1、Arrays.as…...

Cables 现已正式启动积分计划 Alpha 阶段,开放早期白名单申请

Cables 现已正式启动积分计划&#xff0c;并开放白名单抢先体验通道&#xff0c;这标志着 Cables 平台进入第一阶段的部署&#xff0c;旨在为外汇及现实世界资产&#xff08;RWAs&#xff09;构建首个集成的流动性质押与永续期货 DEX。 Cables 平台的设计目标是通过单一系统实…...

Spring Cloud 远程调用

4.OpenFeign的实现原理是什么&#xff1f; 在使用OpenFeign的时候&#xff0c;主要关心两个注解&#xff0c;EnableFeignClients和FeignClient。整体的流程分为以下几个部分&#xff1a; 启用Feign代理&#xff0c;通过在启动类上添加EnableFeignClients注解&#xff0c;开启F…...

STM32单片机中EXTI的工作原理

目录 1. EXTI概述 2. EXTI的组成部分 3. 工作原理 3.1 引脚配置 3.2 中断触发条件 3.3 中断使能 3.4 中断处理 4. 使用示例 5. 注意事项 结论 在STM32单片机中&#xff0c;EXTI&#xff08;外部中断&#xff09;是一种用于处理外部事件的机制&#xff0c;能够提高对硬…...

排序算法详细介绍对比及备考建议

文章目录 排序算法对比算法逐一介绍1. 冒泡排序&#xff08;Bubble Sort&#xff09;2. 选择排序&#xff08;Selection Sort&#xff09;3. 插入排序&#xff08;Insertion Sort&#xff09;4. 希尔排序&#xff08;Shell Sort&#xff09;5. 归并排序&#xff08;Merge Sort&…...

网页布局思路

一、布局思路 1&#xff0c;确定页面的版心(可视区) 2、分析页面中的行模块&#xff0c;以及每个行模块中的列模块。&#xff08;页面布局第一准则&#xff09; 3、一行中的列模块经常用浮动布局&#xff0c;先确定每个列的大小&#xff0c;之后确定列的位置&#xff08;页面…...