在 golang、C 或 C++ 等编程语言中使用指针是否好?
is this good to have pointers in programming languages such as golang,C or C++?
大多数现代编程编译器如JAVA等都不支持指针。
但是在golang中google又引入了指针。
所以,我只想了解指针如何影响编程语言?
由于指针,是否有任何类型的安全线程?
如果这是因为安全性,那么为什么我们在 LINUX 和 UNIX 上拥有世界上最安全的系统(两者都是用 C 构建的)
指针使按引用调用更容易,但更容易被破坏,因为通过指针我们可以直接访问内存位置,因此可能是一个安全问题。
这些问题可以通过防御性编码来防止,但这需要用户知识渊博且勤奋。
JAVA 和 C# 与 C++ 的 'modern' 比较是程序员最糟糕的事情。 JAVA 和 C# 是托管语言,这意味着内存根本不由程序员管理(这是指针的主要功能)。C++ 是一种非托管语言,这就是为什么 C++ 比任何语言都快得多托管语言。您将看到的几乎所有现代 PC 游戏都是使用 C++ 制作的,因为它的运行速度比任何托管语言都快。
从技术上讲,所有语言都使用指针。当您在 Java 或 C# 或 Java 脚本中创建一个对象的实例并将其传递给一个方法时,您实际上是在传递一个指向包含该对象的内存片段的指针,您将通过该指针操作那块内存上的数据。想象一下您 无法通过引用传递 的语言。你不能做太多,现在是吗?每当您使用任何语言通过引用传递时,用最基本的术语来说,您就是在使用美化的指针。
然而,您的意思可能是 "why expose pointers to people; they are so much more complicated" 或类似的东西...答案可能是速度和传统。我们拥有的一些最快的语言是 C 和 C++……它们已经存在了相对较长的时间。它们是久经考验的,人们知道如何使用它们。大多数软件都以这样或那样的方式基于它们。大多数操作系统都是用 C 或其变体编写的。甚至其他编程语言。
至于您的 Go 示例,we have already had a question on that.。
C/C++ 指针可操作。
示例
void f(int* a) {
a++
直接操作有危险
但是,Golang 指针不可用。
所以,同名同义"pointer"。
但是,使用方法还是有区别的。
大多数现代编程编译器如JAVA等都不支持指针。 但是在golang中google又引入了指针。 所以,我只想了解指针如何影响编程语言? 由于指针,是否有任何类型的安全线程?
如果这是因为安全性,那么为什么我们在 LINUX 和 UNIX 上拥有世界上最安全的系统(两者都是用 C 构建的)
指针使按引用调用更容易,但更容易被破坏,因为通过指针我们可以直接访问内存位置,因此可能是一个安全问题。
这些问题可以通过防御性编码来防止,但这需要用户知识渊博且勤奋。
JAVA 和 C# 与 C++ 的 'modern' 比较是程序员最糟糕的事情。 JAVA 和 C# 是托管语言,这意味着内存根本不由程序员管理(这是指针的主要功能)。C++ 是一种非托管语言,这就是为什么 C++ 比任何语言都快得多托管语言。您将看到的几乎所有现代 PC 游戏都是使用 C++ 制作的,因为它的运行速度比任何托管语言都快。
从技术上讲,所有语言都使用指针。当您在 Java 或 C# 或 Java 脚本中创建一个对象的实例并将其传递给一个方法时,您实际上是在传递一个指向包含该对象的内存片段的指针,您将通过该指针操作那块内存上的数据。想象一下您 无法通过引用传递 的语言。你不能做太多,现在是吗?每当您使用任何语言通过引用传递时,用最基本的术语来说,您就是在使用美化的指针。
然而,您的意思可能是 "why expose pointers to people; they are so much more complicated" 或类似的东西...答案可能是速度和传统。我们拥有的一些最快的语言是 C 和 C++……它们已经存在了相对较长的时间。它们是久经考验的,人们知道如何使用它们。大多数软件都以这样或那样的方式基于它们。大多数操作系统都是用 C 或其变体编写的。甚至其他编程语言。
至于您的 Go 示例,we have already had a question on that.。
C/C++ 指针可操作。 示例
void f(int* a) {
a++
直接操作有危险
但是,Golang 指针不可用。
所以,同名同义"pointer"。
但是,使用方法还是有区别的。