【go语言学习笔记】指针

1.指针的基本操作

go语言中,指针的用法类似c语言,具体操作请看demo:

package main

import "fmt"

func main() {
	var a = 10
	fmt.Printf("a = %d\n", a)   //变量的值
	fmt.Printf("&a = %p\n", &a) //变量的地址

	// 保存某个变量的地址,需要指针类型,*int 保存int的地址, **int 保存 *int的地址
	var p *int
	p = &a //指针变量指向谁,就把谁的地址赋值给指针变量
	fmt.Printf("p = %v, &a = %v, *p = %v\n", p, &a, *p)

	*p = 666
	fmt.Println(*p)

}

2.new函数

这里的new函数类似c++中的new关键字,可以分配对应大小的空间,并且无需考虑delete内存空间操作,因为go语言配有垃圾回收机制。

package main
import "fmt"

func main() {
	var p *int

	//p是*int类型,指向int类型
	p = new(int) //go语言有垃圾回收机制,不需要管new出来的空间的生命周期等问题
	*p = 666
	fmt.Println(*P)
}


3.指针的错误用法

go语言对指针进行操作时需要指针有合法的指向,否则就算非法操作。go语言中表示空的关键字为nil,类似c语言中的NULL

package main

import "fmt"

func main() {
	var p *int // 如果没有指向,go语言默认初始化为nil值,下面那句p = nil是不必要的
	p = nil    // go语言中没有NULL,空值为nil
	fmt.Println("p = ", p)

	// *p = 666 ; 错误,因为p没有合法指向

	//正确操作
	var a int
	p = &a
	*p = 666
	fmt.Println(*p)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值