go语言中的指针和c++的指针的区别

不太清楚go语言中的指针和c++的指针的区别在哪里

阅读 11k
3 个回答

Go 语言里面的指针和 C++ 指针一样,都是指向某块内存的地址值,可以解引用,不同只是在于 C++ 里可以直接对指针做算术运算(+、-、++、--)而 Go 里面不行。

差别真的仅限于此,而且 Go 还提供了一些底层的库 reflectunsafe,它们可以让使用者把任意一个 Go 指针转成 uintptr 类型的值,然后再像 C++ 一样对指针做算术运算,最后再还原成 Go 类型。所以从这个角度上来说,Go 的指针也是可以和 C++ 指针一样使用的,只是会比较绕,这同时也要求使用者自己明白,如果真要把指针这么用,那么请记得后果自负。

下面就是一个在 Go 里面直接操作内存指针的例子:

http://play.golang.org/p/z_GMnh38Z1 (需翻墙)

不知道你熟悉C#语言里面的ref关键字吗?意思就是按引用传递。
仅此而已,既不能做指针运算,也不能解引用。

其实是一样的,Go只是做了一些封装,用起来相对比较好理解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题