Go的指针

文章介绍了Go语言中的指针概念,包括指针作为内存地址的表示,取地址运算符`&`和指针解引用运算符`*`的用法,以及指针在变量交换中的作用。文章还强调了指针不能进行加减运算和类型转换,并且在Go中没有类似C++的成员指针操作符`->`,而是使用`.`选择表达式来访问结构体成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

Go的指针

内存地址是内存中每个字节单元的唯一编号,而指针是一个实体。指针会分配内存空间,相当于一个专门用来保存内存地址的整型变量。

  • 取地址运算符 &用来获取对象的地址
  • 指针运算符*用于间接的引用目标对象
  • 二级指针 **T 如包含包名,则写成*package.T
  • 并非所有对象都能进行取地址操作,但变量总是能正确的返回指针运算符为左值的时候,可更新目标对象状态;而为右值的时候则为获取目标状态
  • 指针类型支持相等运算符,但是不能进行加减运算和类型转换。
x := 1234
p := &x
p++ // Error: invalid operation: p += 1 (mismatched types *int and int)
  • 指针没有专门指向成员的->,统一使用.选择表达式

函数传地址交互两个变量的值:

package main  
  
import "fmt"  
  
func main() {  
   a := 100  
   b := 200  
   exchange(&a, &b)  
   fmt.Println(a, b)  
}  
  
func exchange(a, b *int) (int, int) {  
   *a, *b = *b, *a  
   fmt.Println(*a, *b)  
   return *a, *b  
  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值