为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我们需要指针来为 Go/C 中的变量赋值,而不是 C#/Java

为什么我们需要指针来为 Go/C 中的变量赋值,而不是 C#/Java

Go
慕婉清6462132 2021-11-29 19:41:51
这实际上是一个普遍的问题,但现在我正在使用 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变量中。

由于这些语言具有垃圾收集功能,分配和释放内存是自动完成的,因此该框架不需要您显式传递要写入的内存地址,并且不希望您在使用完内存后释放内存。



查看完整回答
反对 回复 2021-11-29
?
繁星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


查看完整回答
反对 回复 2021-11-29
  • 2 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信