在golang,C或C ++等编程语言中有指针是否很好?

时间:2016-12-31 06:31:01

标签: pointers programming-languages language-design

大多数现代编程编译器(如JAVA等)都没有指针支持。 但在golang谷歌再次引入指针。 那么,我只是想了解指针如何影响编程语言? 因为指针有什么样的安全线程吗?

如果这是因为安全性,那么为什么我们在LINUX和UNIX上拥有世界上最安全的系统(两者都是用C语言构建的)

4 个答案:

答案 0 :(得分:2)

技术上,所有语言都使用指针。当您使用Java或C#或Javascript创建对象的实例并将其传递给方法时,实际上是将指针传递给包含该对象的内存块,您将通过该指针操作该内存上的数据。想象一下你不能通过参考的语言。你不可能做得多,现在好吗?每当你用任何语言通过引用时,你都会用最基本的术语 - 使用美化指针。

然而,你可能意味着"为什么要向人们展示指针;它们更加复杂,或类似的东西......而答案可能就是速度和传统。我们拥有的一些最快的语言是C和C ++ ......它们已经存在了相当长的时间。它们是经过验证的,人们知道如何使用它们。大多数软件都以这种或那种方式基于它们。大多数操作系统是用C或其某些变体编写的。甚至其他编程语言。

为了你的例子,we have already had a question on that.

答案 1 :(得分:2)

C / C ++指针正常运行。 实施例

void f(int* a) {
  a++

直接操作是危险的。

但是,Golang指针无效。

所以,同名和相同的意思"指针"。

但是,如何使用有区别。

答案 2 :(得分:1)

JAVA和C#与C ++的“现代”比较是程序员可以做的最糟糕的事情。 JAVA和C#是托管语言,这意味着内存根本不由程序员管理(这是指针的主要功能).C ++是一种非托管语言,这就是为什么C ++比任何托管语言都快得多的原因。您将看到的几乎所有现代PC游戏都是使用C ++制作的,因为它比任何托管语言运行得更快。

答案 3 :(得分:0)

指针使引用调用更容易,但更容易被破坏,因为通过指针我们可以直接访问内存位置,因此可能是一个安全问题。

这些问题可以通过防御性编码来防止,但这需要用户具备知识和勤奋。