其实大部分语言无论在语言层面如何定义,本质上来说就是数据是存在堆还是栈的问题。
一般存在栈的就是值类型,内存空间存的值。 堆一般都是动态分配的内存,那么变量对应的空间(分配在栈)存的是堆内对象地址相当于桥接。
可以操作指针语言分的很清楚 ;不能操作指针的都是隐含的引用,编译器负责实现
补充一下:上述可能描述不太清楚,编程语言在语言层面不同层度自动处理了指针引用关系,从而导致了很多副作用规则。
以java为例 声明变量 根据类型在栈内分配不同的内容大小 基本类型直接把值存在变量映射的栈内容
对象类型 new后把堆的地址 存在变量对应的栈内存空间 java语言层面自动隐藏了底层对应关系
认为变量存的就是赋值的内容
以pathon为例 所有都是引用 那么变量 分配的就是指针地址大小的宽度 所有都存在的地址 pyton自动封装了低音关系
语言层面认为存的是对象内容
--
修改:nextworld8 FROM 124.127.76.*
FROM 36.112.192.*