C++数组的元素在内存中的存储介绍

这篇具有很好参考价值的文章主要介绍了C++数组的元素在内存中的存储介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C++数组的元素在内存中的存储介绍

关于C++数组基础知识可见:https://blog.csdn.net/cnds123/article/details/108936055

一维数组可以看作是一个线性表(有序序列),每个元素按照顺序排列在一起。例如a[5]:

C++数组的元素在内存中的存储介绍,C、C++学习,编程资料,c++,开发语言

二维数组可以看作是一个平面中的表格,每个元素在具体的行列位置上,每行是一个一维数组。例如a[3][4]:

C++数组的元素在内存中的存储介绍,C、C++学习,编程资料,c++,开发语言

三维数组可以看作是一个平面的集合,每个平面由二维数组组成。例如a[2][3][4]:

C++数组的元素在内存中的存储介绍,C、C++学习,编程资料,c++,开发语言

【对于四维数组,我们可以将它看作是一个四维空间中的数据集合。类似于三维数组,四维数组由多个三维数组组成。

C++数组的元素在内存中的存储介绍,C、C++学习,编程资料,c++,开发语言

对于四维及以上数组,不做过多介绍】

一维数组的元素存储

对于一维数组,在内存中的排列顺序为:从数组首元素开始,依次排列每个元素,直到尾元素。 图示如下:

C++数组的元素在内存中的存储介绍,C、C++学习,编程资料,c++,开发语言

下面介绍多维数组元素在内存中的存储。

 在 C++ 中,多维数组元素在内存中的存储方式有按行优先和按列优先两种方式。具体是由编译器决定的,通常是按行优先的方式

多维数组在内存中有两种常见的元素布局方式:行优先(Row-major)和列优先(Column-major)。
对于二维数组,行优先和列优先的概念比较容易理解。
在行优先布局中,每一行的元素连续存储,并且下一行的元素紧随其后。
在列优先布局中,每一列的元素连续存储,并且下一列的元素紧随其后。
对于三维数组,行优先布局仍然是按照行的顺序来存储元素,只不过每个平面也按照行优先方式存储,并且平面之间按照索引顺序存储。
列优先布局同理,可以将三维数组看作是一个平面的集合,每个平面按照列优先方式存储,平面之间按照索引顺序存储。
三维及以上的数组的元素在内存中的布局,行优先(Row-major)和列优先(Column-major)只是对末尾两维(平面的两维)而言的。行优先和列优先原则只适用于末尾的两维(平面)。在内存中,多维数组都是以一维线性数组的形式存储的,因此要决定存储顺序,需要指定如何将多维数组映射到一维线性数组中。行优先和列优先原则规定了平面的两个维度的存储顺序,而其他维度的顺序通常是连续的,即按照数组定义顺序依次排列。

下面按行优先的布局方式介绍,这是C/C++语言中常见的元素存储方式。

二维数组的元素存储图示如下:

C++数组的元素在内存中的存储介绍,C、C++学习,编程资料,c++,开发语言

 三维数组的元素存储图示如下:

C++数组的元素在内存中的存储介绍,C、C++学习,编程资料,c++,开发语言

OK!文章来源地址https://www.toymoban.com/news/detail-635212.html

到了这里,关于C++数组的元素在内存中的存储介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】STL 算法 - transform 变换算法 ① ( transform 函数原型 | 将 一个 或 两个 输入容器 中的元素 变换后 存储到 输出容器 中 )

    std::transform 是 STL 标准模板库 中的一个算法 , 该算法的作用是 用于对 容器 或 指定迭代器范围 的 每个元素 进行 指定的 \\\" 转换操作 \\\" , 并将 \\\" 转换结果 \\\" 存储到另一个容器中 ; std::transform 算法 接受 一个 或 两个输入范围 , 以及一个输出范围 , 并 根据提供的 一元函数对象 或

    2024年01月16日
    浏览(46)
  • C语言学习(三十一)---结构体、联合体的在内存中的存储

    在上一篇文章中,我们学习了 枚举 、 位段 和 联合体 的相关内容,在文章的末尾,我们还差了关于 联合体的存储 问题的内容,今天我们将学习该部分的内容,好了,话不多说,开整!!! 结构体 在内存中是如何存储的呢,是按里面的变量内容,在 内存中的连续地址中存

    2024年02月12日
    浏览(28)
  • 【C++】学习C++STL中的数组——vector

            好久不见大家!今天的这篇博客是关于我对于STL(C++标准模板库)中的容器vector的学习和理解,希望大家能够喜欢。          vector是STL中的一种序列容器,对应着数据结构中的顺序表,也可以说是数组。在我们正式学习了解vector之前,我们先看看C++官网对其的文档介

    2024年02月10日
    浏览(29)
  • 【数据结构】数组的顺序存储(1、2、3、n维数组的元素地址计算)|保姆级详解+图解

    作者: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:算法、数据结构、Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: 【数据结构】:该专栏专注于数据结构知识,持续更新,每一篇内容优质,浅显易懂,不失深度! 近期目标: 写好专栏

    2024年02月07日
    浏览(30)
  • 删除数组中的指定元素或数组对象

    1.删除数组中的某个指定元素 1)首先获取元素下标,用indexOf()函数找到他的位置index,如果没有找到这个元素那么index将会等于-1;如下为找到元素2的下标 var array = [1,2,3]; var index = array.indexOf(2); 2)使用splice进行移除,删除第index位置的指定个数的元素,splice直接修改原数组,并

    2024年02月11日
    浏览(46)
  • 过滤数组中的元素

    🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 给定一个整数数组 arr 和一个过滤函数 fn,并返回一个过滤后的数组 filteredArr 。 fn 函数接受一个或两个参数: arr[i] - arr 中的数字 i - arr[i] 的索引

    2024年02月01日
    浏览(24)
  • 现代C++中的从头开始深度学习【2/8】:张量编程

            初学者文本 :此文本需要入门级编程背景和对机器学习的基本了解。 张量是在深度学习算法中表示数据的主要方式。它们广泛用于在算法执行期间实现输入、输出、参数和内部状态。         在这个故事中,我们将学习如何使用特征张量 API 来开发我们的C+

    2024年02月13日
    浏览(23)
  • 2635. 转换数组中的每个元素

    🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 编写一个函数,这个函数接收一个整数数组 arr 和一个映射函数 fn ,通过该映射函数返回一个新的数组。 返回数组的创建语句应为 returnedArray[i] = f

    2024年01月21日
    浏览(28)
  • [正式学习java③]——字符串在内存中的存储方式、为什么字符串不可变、字符串的拼接原理,键盘录入的小细节。

    🌈键盘敲烂,年薪30万🌈 目录 一、字符串 1.字符串在内存中的存储方式 2.创建字符串对象的两种方式 3.两种创建方式的区别 4.字符串对象一旦创建不可改变 - 为什么??? 5.字符串的拼接 6.字符串的拼接原理 二、键盘录入 三、总结 🔥在java中,内存中有两个地方可以存储

    2024年02月08日
    浏览(57)
  • leetcode: 2789. 合并数组中的最大元素

    给你一个下标从 0 开始、由正整数组成的数组  nums  。 你可以在数组上执行下述操作 任意 次: 选中一个同时满足  0 = i nums.length - 1  和  nums[i] = nums[i + 1]  的整数  i  。将元素  nums[i + 1]  替换为  nums[i] + nums[i + 1]  ,并从数组中删除元素  nums[i]  。 返回你可以从最

    2024年03月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包