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

爱:

这实际上是一个普遍的问题,但是由于我正在使用Go和C#,所以现在发生了。假设我们要从Go中的用户输入中分配一个变量:

func main() {
    var input float64
    fmt.Scan(&input)
}

很清楚为什么我们需要一个存储位置来放入新值。但是为什么在Java或C#等语言中,我们没有遵循相同的逻辑:

var input = Convert.ToInt32(Console.ReadLine());
// and not &input ...
法比奥·容克伊拉(FábioJunqueira):

Java和C#是高级语言,可以抽象出大多数内存管理以及低级语言(例如C)所需的其他特定内容。

在这种情况下,该Console.ReadLine()函数分配内存以存储控制台输入,并将其复制到input变量。

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

编辑:

请参阅@kostix评论,以获取对该答案的极大改进。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我们需要浮点指针或整数指针分别指向浮点变量或整数变量?

在 C 中使用指针时,我们何时以及为什么需要使用 malloc?

在 C 中,如果将双指针分配给值,为什么指针变量为 0?

为什么我们到底需要Java中的StringBuffer

为什么我们需要Java中的默认方法?

为什么我们需要纯<?>在Java中?

为什么我们需要Java中的Properties类?

为什么我们需要Java中的弱引用

为什么我们需要C ++中的虚函数?

为什么我们在c中使用函数返回指针以及函数返回指针的应用

在此示例中,为什么我们返回一个指针而不是一个值?

为什么我们在MongoDB中需要created_at

为什么我们需要python中的协程?

为什么我们需要Kubernetes中的服务帐户?

为什么我们在芹菜中需要签名?

为什么我们在git中需要SSH密钥?

为什么我们需要Clojure中的'in(require'[...]])?

为什么我们在Python中需要“ finally”子句?

为什么我们在Hadoop堆栈中需要ZooKeeper?

为什么我们在Typescript中需要任何类型?

为什么我们需要Python中的属性?

为什么我们在区块链中需要 TLSNotary?

为什么我们需要把*用作指针

为什么我们访问由 char* 指向的字节的值而不是指针的值?

在 SLL 中,当其原始节点属性默认设置为 None 时,为什么我们显式覆盖指向 None 的下一个指针?

为什么我们需要在C#中锁定并反对?

为什么在C#方法中我们需要多个`await`语句?

为什么我们为glfwCreateWindow使用指针?-OpenGL

为什么我们需要在 Go 中的 Diffie Hellman 密钥交换算法中恢复公钥