这实际上是一个普遍的问题,但现在我正在使用 Go 和 C#。假设我们想从用户在 Go 中的输入中分配一个变量:func main() { var input float64 fmt.Scan(&input)}很明显为什么我们需要一个内存位置来放置我们的新值。但是为什么在像 Java 或 C# 这样的语言中,我们没有遵循相同的逻辑:var input = Convert.ToInt32(Console.ReadLine());// and not &input ...
2 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
Java 和 C# 是高级语言,它们抽象了 C 等低级语言所需的大部分内存管理和其他特定事物。
在这种情况下,该Console.ReadLine()
函数分配内存来存储控制台输入并将其复制到input
变量中。
由于这些语言具有垃圾收集功能,分配和释放内存是自动完成的,因此该框架不需要您显式传递要写入的内存地址,并且不希望您在使用完内存后释放内存。
繁星coding
TA贡献1797条经验 获得超4个赞
在 Go 中,与 C/C++ 一样,指针变量是通过引用传递类型的方式。
Java 和 C# 等语言不鼓励使用指针变量。C# 具有用于通过引用传递值类型的“ref”关键字和“boxing”。
有关“ref”的更多信息,请 参见此处:https : //msdn.microsoft.com/en-us/library/14akc2c7.aspx有关“拳击”的更多信息,请参见此处:https : //msdn.microsoft.com/en-us/图书馆/yz2be5wk.aspx
- 2 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消