按值访问和按地址访问,栈内存保存堆对象的地址
来源:3-1 数据类型和堆栈
WittChen
2020-05-06 15:14:31
老师您好,这节课听得半懂,因此自己画了个图,看看自己理解的对不对,有不对的老师请即时指出。
1、如上图,包括num,a,b,c,d这几个变量,我都把它理解为指针,在声明的时候指向栈中的某个数字。
2、老师提到了按值访问,那么我在堆中声明了一个list的数组,然后其中直接填了数字,数字直接在栈中可以找到,那么这个应该算是按值访问了。
3、老师也说了因为堆中数据是无序的,因此需要在栈中保存地址用来访问,那么我在声明dict这个对象的时候,dict变量名作为指针,声明过程中程序会生成一个地址保存在栈中,接着dict这个指针指向栈中的这个地址,然后我们通过变量得到地址,然后我们拿到dict这个对象。
1回答
同学你好,堆栈的相关解释如下:
栈内存是有序排列的,它会分成一个一个的小房间,房间名就是变量名;基本类型保存在栈内存中,房间内保存的就是这个值本身(基本类型没有指针)。引用类型按引用访问,它将地址(指针)保存在栈内存的某个房间内;引用类型需要通过指针(地址)才能找到具体的数据,由于指针(地址)都是固定大小的,所以指针保存在栈内存中。
如果我的回答帮到了你,欢迎采纳,祝学习愉快!
相似问题