189 8069 5689

C++中二维数组的地址怎么分布

这篇文章主要讲解了“C++中二维数组的地址怎么分布”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中二维数组的地址怎么分布”吧!

公司主营业务:网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出东洲免费做网站回馈大家。

C++测试代码如下:

// 测存储地址 void test_arr() {     int array[2][3] = {   {0, 1, 2},   {3, 4, 5}     };     cout << &array[0][0] << " " << &array[0][1] << " " << &array[0][2] << endl;     cout << &array[1][0] << " " << &array[1][1] << " " << &array[1][2] << endl; }  int main() {     test_arr(); }

测试地址为

0x7ffee4065820 0x7ffee4065824 0x7ffee4065828 0x7ffee406582c 0x7ffee4065830 0x7ffee4065834

注意地址为16进制,可以看出二维数组地址是连续一条线的。

一些录友可能看不懂内存地址,我就简单介绍一下, 0x7ffee4065820 与 0x7ffee4065824  差了一个4,就是4个字节,因为这是一个int型的数组,所以两个相信数组元素地址差4个字节。

0x7ffee4065828 与 0x7ffee406582c 也是差了4个字节,在16进制里8 + 4 = c,c就是12。

如图:

C++中二维数组的地址怎么分布

可以看出在C++中二维数组在地址空间上是连续的。

像Java,Python是没有指针的,同时也不对程序员暴漏其元素的地址,寻址操作完全交给虚拟机。

所以看不到每个元素的地址情况,这里我以Java为例,也做一个实验。

public static void test_arr() {     int[][] arr = {{1, 2, 3}, {3, 4, 5}, {6, 7, 8}, {9,9,9}};     System.out.println(arr[0]);     System.out.println(arr[1]);     System.out.println(arr[2]);     System.out.println(arr[3]); }

输出的地址为:

[I@7852e922 [I@4e25154f [I@70dea4e [I@5c647e05

这里的数值也是16进制,这不是真正的地址,而是经过处理过后的数值了,我们也可以看出,二维数组的每一行头结点的地址是没有规则的,更谈不上连续。

所以Java的二维数组可能是如下排列的方式:

C++中二维数组的地址怎么分布

感谢各位的阅读,以上就是“C++中二维数组的地址怎么分布”的内容了,经过本文的学习后,相信大家对C++中二维数组的地址怎么分布这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


标题名称:C++中二维数组的地址怎么分布
URL分享:http://cdxtjz.com/article/gcgioc.html

其他资讯