堆内存的进阶理解

目的输出下列二位数组  

var result = [
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]
]

      循环嵌套解题  题前 知识点汇总(    数组是引用数据类型,进而使用的内存形式为 堆内存    )

      代码逻辑 外层for 实现 有五行数组  

            里层for 实现 有 i*1+1开头的对单行数组的五个顺次数的添加

----------------------------------------------------------------------------

          var arr = [];
          for (var i = 0; i < 5; i++) {
          var temp = i * 5 + 1;
          var itemArr = [];
  X    for (var j = temp; j < temp + 5; j++) {
  Y    itemArr.push(j);                     

        }
  Z    arr.push(itemArr);

          }

          console.log(arr);
          }  

----------------------------------------------------------------------------

将Z行代码移动到  Y行下时 代码改编为

          var arr = [];
          for (var i = 0; i < 5; i++) {
          var temp = i * 5 + 1;
          var itemArr = [];
     X    for (var j = temp; j < temp + 5; j++) {
     Y    itemArr.push(j);                     

     Z    arr.push(itemArr);

            }
          }

          console.log(arr);
          }  

 

                               问题 ??

                               将Z行代码移动到  Y行下时这样的 ???

 

 

 

                    Q          原本想法是 应该是{【1】}  这是错的

                   W                  {【1】【2】}

                   E                 {【1】【2】【3】}

 

                       这是对 堆储存的底层理解 但是输出是 

         R             在进行里层for第一次循环时  输出 0:【1】

         T             在进行里层for第二次循环时  输出 0:【1】【2】

                                          1:【1】【2】

         U             在进行里层for第三次循环时  输出 0:【1】【2】【3】

                                          1:【1】【2】【3】  

                                          2:【1】【2】【3】

               为什么呢????????

               这就是堆储存的特点

                0: 和 1:,2:等等 指向的都是一个内存地址

                在  R  行 数组输出 0:【1】 指向的内存里 也只是存了 【1】

                在  T  行 数组输出  0:【1】【2】

                              1:【1】【2】

 

                   数组  0 和  1 指向的是同一个堆内存,

                     在 0——> 1 的过程中 ,

                  堆内存发生了变化{[1]}——>{[1],[2]}

                  数组0 和 1 又都指向这一个堆内存 所以有了 T 行 的执行结果

                  在进行里层for第二次循环时  输出 0:【1】【2】

                                     1:【1】【2】

                                

 

                

                          

                                                                 
  

posted @   lknmn  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示