栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Golang开发--指针的使用

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang开发--指针的使用

一个指针变量指向了一个值的内存地址,用它得到的内容和取地址符得到的内容相同。

指针使用:

1.定义指针变量。
2.为指针变量赋值。
3.访问指针变量中指向地址的值。

在指针类型前面加上 * 号来获取指针所指向的内容。

package main
import  "fmt"

func main(){
	var quanju =10 
	fmt.Println("quanju Address:",&quanju)
	var p *int
	p=&quanju
	fmt.Println(*p)
	fmt.Println(p)
}

运行结果为:

quanju Address: 0xc000012088
10
0xc000012088

如果只定义了指针并没有赋值,则它为空指针,它的值为nil

package main
import  "fmt"

func main(){
	var p *int
	fmt.Println(p)
}
//

空指针并没有指向内存地址,因此*p也无法获得值

指向数组的指针
如果需要保存数组元素,则需要用到指针数组,即数组中的每个元素都是一个指针变量,指向一个值的内存地址
声明:

var pname [size] *xtype

package main
import  "fmt"
func main(){
	var p [5] *int
	var i int
	for i=0;i<5;i++{
		p[i]=&i
	}
	for i=0;i<5;i++{
		fmt.Println(*p[i])
	}
}

运行结果为:

0
1
2
3
4

指向指针的指针

如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量

当定义一个指向指针的指针变量时,第一个指针存放第二个指针的地址,第二个指针存放变量的地址

var pname ** xtype

package main
import  "fmt"
func main(){
	var x =10
	var p1 *int
	var p2 **int
	p1=&x
	p2=&p1
	fmt.Println("x=",x)
	fmt.Println("x=",*p1)
		fmt.Println("x=",**p2)
	fmt.Println("address of x=",&x)
	fmt.Println("address of x=",p1)
	//fmt.Println("address of x=",&&p2)
}

运行结果为:

x= 10
x= 10
x= 10
address of x= 0xc0000ac058
address of x= 0xc0000ac058

上面注释的语句,两次取地址会报错:

syntax error: unexpected &&, expecting expression

指针作为函数参数

在函数定义的参数上设置为指针类型,调用函数时用取地址符调用

package main
import  "fmt"
func main(){
	var x,y =10,20
	fmt.Printf("x=%d,y=%dn",x,y)
	swap(&x,&y)
	fmt.Printf("x=%d,y=%dn",x,y)
}
func swap(x *int,y *int){
	*x,*y=*y,*x
}

运行结果为:

x=10,y=20
x=20,y=10
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993609.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号