基础概念理解

news2024/11/25 14:43:18

一,数据结构分类

连续结构,跳转结构。

二,对变量的理解

在 C 语言中,变量是用于存储数据的抽象符号。变量本质上是一块内存区域的标识符(即它代表内存中的某一块区域),用来存储数据,并通过一个名字来访问这些数据。为了深入理解这一点,我们需要从几个方面来探讨:

1. 变量的本质

  • 内存地址:变量本质上是内存中的一块存储区域,计算机内存中的每个单元(如字节)都有一个唯一的地址。一个变量通过名字绑定到一个内存地址,这样程序就可以通过这个变量名字来访问存储在该内存地址中的数据。

  • 数据类型:每个变量都有一个数据类型(如 intfloatchar 等),这决定了该变量可以存储的数据的类型及其大小。不同的数据类型需要不同大小的内存空间。例如,int 类型通常占 4 字节,char 类型占 1 字节,float 类型占 4 字节。

  • 存储:C 语言中变量的存储位置通常是在(局部变量)、(动态分配的内存)、或者静态存储区(静态变量、全局变量)中。变量名只是程序中对内存位置的“引用”,它并不直接表示数据,而是帮助我们通过名字来访问实际存储的数据。

2. 为什么需要变量名

变量名提供了一种方便、直观的方法来访问内存中的数据。在 C 语言中,程序员通过变量名而不是直接通过内存地址来操作数据,这样做有几个重要的理由:

  • 提高可读性:如果程序中的每个变量都用内存地址来表示,那么代码就会变得极为复杂且难以理解。变量名给每个存储单元提供了一个有意义的标签,能够让程序员容易理解变量的作用和内容。

  • 避免直接操作内存地址:直接使用内存地址来操作数据不仅麻烦且容易出错,C 语言通过变量名隐藏了这些实现细节,程序员无需关心数据存储的物理地址,降低了程序出错的可能性。

  • 可维护性:使用变量名使得代码更易于维护。当程序需要改变某个变量的实现(例如改变内存布局或者数据类型)时,只需要修改相关的变量声明和使用,而不需要到处修改内存地址。

3. 变量名与存储的数据的关系

  • 内存映射:变量名实际上是内存地址的别名,它指向内存中的一块区域。每个变量名都绑定到一个特定的内存位置,通过这个名字,程序可以访问该位置存储的数据。变量名本身并不包含数据,它只是内存中数据的一种“标识”。

  • 数据存储与类型:变量名指向的内存区域的大小和类型取决于变量的声明。例如,int x 声明一个 int 类型的变量,通常占 4 字节内存,而 char y 声明一个 char 类型的变量,通常占 1 字节内存。数据的存储结构和方式与变量的类型密切相关。

  • 访问数据:通过变量名,程序可以对存储在内存中的数据进行操作。例如,x = 5; 语句将 5 存储到 x 变量对应的内存位置。程序实际上是通过 x 来间接访问内存中的那块存储区域,读取或者修改数据。

4. 内存模型

C 语言中的内存模型决定了变量名与数据存储的关系。在一个简单的 C 程序中,变量名指向的内存位置可以分配在不同的内存区域:

  • 栈内存(Stack):局部变量通常存储在栈上,栈内存是一个先进后出(LIFO)的结构。栈上的内存分配和释放由编译器自动管理,程序员不需要手动干预。

  • 堆内存(Heap):通过 malloccallocrealloc 等函数动态分配的内存通常存储在堆上。堆内存由程序员手动管理(例如通过 free 释放)。

  • 静态内存(Static Memory):全局变量和静态变量存储在静态内存区域,它们的生命周期从程序开始到结束,而不受栈的作用范围限制。

  • 寄存器(Registers):编译器可能会将一些频繁使用的变量存储在寄存器中,这些变量具有比内存更快的访问速度,但寄存器的数量有限。

三,对控制流的理解

四,函数调用的理解

着重强调一下值传递和引用传递:

值传递就是复制忍者卡卡西,虽然长得一样,包含的数据一样,但终究是拷贝。但引用传递就是鲁迅与周树人的关系,名字不同,指的是同一个人。

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

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

相关文章

【微服务】不同微服务之间用户信息的获取和传递方案

如何才能在每个微服务中都拿到用户信息?如何在微服务之间传递用户信息? 文章目录 概述利用微服务网关做登录校验网关转微服务获取用户信息openFeign传递微服务之间的用户信息 概述 要在每个微服务中获取用户信息,可以采用以下几种方法&#…

5G NR:各物理信道的DMRS配置

DMRS简介 在5G中,DMRS(DeModulation Reference Signal)广泛存在于各个重要的物理信道当中,如下行的PBCH,PDCCH和PDSCH,以及上行的PUCCH和PUSCH。其最为重要的作用就是相干解调(Coherence Demodu…

使用Docker快速部署FastAPI Web应用

Docker是基于 Linux 内核的cgroup、namespace以及 AUFS 类的Union FS 等技术,对进程进行封装隔离,一种操作系统层面的虚拟化技术。Docker中每个容器都基于镜像Image运行,镜像是容器的只读模板,容器是模板的一个实例。镜像是分层结…

「QT」几何数据类 之 QRectF 浮点型矩形类

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

2024双十一有什么是宝妈们值得入手的?双十一母婴必买清单

随着双十一购物狂欢节的临近,宝妈们纷纷开始筹备为家庭增添新的宝贝。作为一年一度的大型促销活动,双十一不仅提供了各种优惠,更是宝妈们囤货的好时机。2024双十一有什么是宝妈们值得入手的?在这个特殊的日子里,母婴产…

VMware Fusion和centos 8的安装

资源 本文用到的文件:centos8镜像 , VMware 软件包 , Termius 文件链接: https://pan.baidu.com/s/1kOES_ZJ8NGN-BnJl6NC7Sg?pwd63ct 安装虚拟机 先 安装 vmware ,然后打开,将下载的 iso 镜像拖入 拖入镜像文件iso Continue, 然后随便选…

返回对象的唯一标识符通常是对象的内存地址id(对象或变量)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 返回对象的唯一标识符 通常是对象的内存地址 id(对象或变量) [太阳]选择题 根据题目代码,执行的结果是? a [1, 2, 3] b a c a.copy() print("【显示】id(a) &…

SAP ABAP开发学习——WDA 四

目录 页面技术的发展 WebDynpro Layout控件 Layout的组件结构 布局方式 流式布局FlowLayout ​编辑 行布局RowLayout 矩阵布局MatrixLayout 网格布局GridLayout 数据绑定 在屏幕上显示数据 数据的双向传输 通过数据绑定控制UI显示 属性节点类型 属性的数据类型 …

速度快还看巡飞,筒射巡飞无人机技术详解

筒射巡飞无人机(Launch and Recovery by Tube,LRAT或Launcher-Deployed Loitering Munition,LDLM)作为一种新型无人机系统,近年来在军事和民用领域都展现出了巨大的潜力。以下是对筒射巡飞无人机技术的详细解析&#x…

想要监控办公电脑?那款电脑监控软件最好

在现代企业中,电脑监控已经成为了一项不可或缺的管理工具,尤其是对那些有多个部门和员工的公司。良好的电脑监控软件不仅能够帮助管理者了解员工的工作情况,还能提高工作效率、防止内部信息泄露以及保障公司数据安全。市场上有不少监控软件&a…

Elasticsearch(三):Elasticvue使用及DSL执行新增、查询操作

Elasticvue使用及DSL执行CURD 1 概述2 什么是Elasticsearch DSL3 基本结构4 客户端工具介绍4.1 索引介绍4.2 创建简单索引4.3 创建相对完整的索引4.4 插入数据4.4.1 基本插入操作4.4.2 批量插入操作 5 常用的DSL查询类型5.1 match查询5.1.1 match工作原理5.1.2 operator 参数5.…

zynq pl设计中断问题

问题 逻辑工程师vivado工具生成的pl hdf文件后,通过xilinx的工具解析的的dts文件,会出现中断号异常的问题。 原始问题肯定是硬件表现为通讯异常,此处以网口为例,则网口不通。 网口查询 uboot下网口信息 如下命令查询到 两个mac下对应的phy,地址分别为4和6,和硬件设计一…

Hadoop(HDFS)

Hadoop是一个开源的分布式系统架构,旨在解决海量数据的存储和计算问题,Hadoop的核心组件包括Hadoop分布式文件系统(HDFS)、MapReduce编程模型和YARN资源管理器,最近需求需要用到HDFS和YARN。 文章目录 HDFS优缺点HDFS的读写原理 常…

实在智能受邀出席柳州市智能终端及机器人产业发展合作大会

10 月 27 日至 28 日,由中共柳州市委员会与柳州市人民政府主办的2024柳州市智能终端及机器人产业发展合作大会在柳州莲花山庄隆重举行。大会充分整合各方资源,持续深化与柳州在重大战略规划、重大平台建设、重点产业培育等领域的合作。作为智能体行业的知…

100+SCI科研绘图系列教程(R和python)

科研绘图系列:箱线图加百分比点图展示组间差异-CSDN博客科研绘图系列:箱线图加蜜蜂图展示组间数据分布-CSDN博客科研绘图系列:小提琴图和双侧小提琴图展示组间差异-CSDN博客科研绘图系列:组间差异的STAMP图的ggplot2实现-CSDN博客…

【WRF模拟】全过程总结:WPS预处理及WRF运行

【WRF模拟】全过程总结:WPS预处理及WRF运行 1 数据准备1.1 嵌套域设置(Customize domain)-基于QGis中gis4wrf插件1.2 静态地理数据1.2.1 叶面积指数LAI和植被覆盖度Fpar(月尺度)1.2.2 地面反照率(月尺度)1.2.3 土地利用类型+不透水面积1.2.4 数据处理:geotiff→tiff(W…

鸿蒙的进击之路

1. 题记: 为什么要写鸿蒙,因为她是华为的,为什么是华为就要写,因为华为背负了国人太多太多的包袱,或点赞或抨击。 我是强烈支持华为的,但我会客观公正地去评价华为的产品,就比如这篇博文&#…

国内 ChatGPT中文版镜像网站整理合集(2024/11/08)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1,支持MJ绘画 ② chat.lify.vip 支持通用全模型,支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4,4o以及MJ绘画 1. 什么是镜像站 镜像站(Mirror Site&#xff…

【机器学习】决定系数(R²:Coefficient of Determination)

决定系数,也称为 R 平方,是一种用于衡量回归模型预测效果的统计指标。它表示了模型解释目标变量总变异的程度,数值介于 0 和 1 之间,数值越接近 1 表明模型的解释力越强。 1. 的定义和公式 的公式如下: 其中&#xf…

deepfm模型实现招聘职位推荐算法

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…