数据:数组解析

数组是最基础的类型,其内存布局直接影响代码优化。数组的连续存储使其具备空间亲和性和高效的寻址能力,但在插入和删除操作时较繁琐。不同语言中数组的实现和传递方式各异,如Go语言的数组是值传递,而C语言则是引用传递。在处理数组时,考虑使用切片、链表等结构优化性能,同时了解不同语言的数组行为对于理解和优化代码至关重要。
摘要由CSDN通过智能技术生成

数组

我们站在汇编的角度基本上没有数据结构一说,只有纯数字。要么传地址,地址也是一些整数,要么就是把内存中一些字节从寄存器搬到内存或者从内存搬到寄存器或者做一些简单的数学运算。所以站在汇编的角度事情很简单很直接。这样的好处就是我们可以抛开很复杂的抽象理论去研究计算机本质是怎样工作的。

那么带来的问题是在我们编程时不可能全部用数字来表达所有的东西,需要用抽象概念来表达这些数字。从本质上来说,不管是字符串还是对象还是类型,都是由一些数字构成的一些数学模型。当我们学习这些抽象概念的时候,我们一定要有一种途径把它还原成原始的状态。

我们就来研究一些基本类型以外的复合类型。从字面上来说复合类型就是由多个基本类型构成的。由多个独立内存块构成的数据结构通常称之为复合类型。当然在不同的语言里对于复合类型的定义不太一样。比如说C语言里默认没有字符串的概念,它是以某个结束符标记的字节数组称之为字符串。

我们想象一下整个内存看做成超大号的字节数组,其中地址就是数组的序号,所以说不管类型多么复杂,归根到底它是在数组之上进行抽象的。所谓的虚拟地址空间就是看做成字节数组,在这字节数组之上通过一些关联逻辑把它构想成一个复杂的数据结构。

我们还是最终需要把数据结构最终还原成具体的内存布局。学习C语言时都知道研究一个对象的时候首先需要知道它的内存布局结构,理解内存布局结构关系到我们进行代码优化,选择什么样的算法。因为这样我们才知道当传递一个对象的时候究竟复制的是什么东西,如果是简单的整数就把整数复制过去ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值