c++程序主程序定义两个变量与定义一个数组,其元素存储方式不同?

今天,向往常一样去上耿老师的课,但是老师布置一个任务,每人都要写博客,之前老师也提过这个要求,但是我忽视了,并且内心的完美主义告诉自己,自己写不出好的博客,等等吧,但实际上,写博客是自己总结升华知识并内化为自己知识的步骤,而且分享给网上其他的小伙伴,大家互相学习,真的很好。想到这里,我准备写自己第一篇所谓的知识技术博客啦。

1.老师讲到函数的引用传递的时候,我在下面同步敲代码,swap函数中的a,b,实际上是x,y 的别名,我输出他们地址去验证,是的。但是我对他们地址产生了好奇,为什么先定义的变量地址数大于下一个变量的地址?(见下图)

产生这样一个想法之后,我又定义了一个数组去比较一下。(见下图)

可见数组还是我们熟知的连续这这样存储下去。但是我接下定义了两个数组,

那我就知道了,数据应该就是从高地址往低地址存的。只不过这里我要附加说明的是,上图可以看到,数组b的地址是30,那么我利用汇编的知识可以解释,当定义了a数组时候,那一行的空间(0x70fe40~0x70fe4f)都给他先用着吧,然后我们存数组b的时候,重新开了一行的空间,就是他的上一行30开始存……随便说到这里,我又有了些其他想法,赶紧又去写了2段代码。(见下图)

就暂且这么认为吧,有点理解,就是我又定义的一个数组又开了一行的空间(数组c地址是20)。恩,看下一个代码截图。

这一下子有点蒙了,我看看啊,恩,不懂,我其实想看看要是存的数据超过了一行,他怎么给地址的,但是我们看到,他往前移了好多空间,在存数组b的时候地址也与我预期的对不上,干脆把他们全部输出好了:

哦哦,前面是我算错了,对于数学不好的我算16进制的地址也不是很熟练,数组b存的没问题,哎~对了,既然我们地址是用小端法表示的,也就是说一个字节一个字节的从后往前放,那么这不就与我之前说的定义两个元素地址从高到低放置是一致的吗(一个元素一个元素地从后往前放)!!!哇,好开心,好像解决了什么问题哎~好了,我已经想吃饭好久了,没想到这篇博客持续这么长时间。去吃饭了,bye~

 

posted on 2018-03-22 19:38  lijinghua  阅读(710)  评论(1)    收藏  举报

导航