您的位置:首页 > 编程语言 > Go语言

go语言的指针

2015-08-08 00:04 447 查看
在学习go语言的时候,谈到了指针。之前很害怕指针,因为在传说中,指针这玩意儿据说狠不好弄,且有很多程序员都死在这上面。可是,这毕竟是go语言借鉴C语言为了提升速度的,所以硬着头皮把c语言的指针学习了一下,主要是概念的东西,顺便看了几行C语言的代码,为了不至于使自己的学习成果随着时间忘掉,故作此记录,以为之后学习的记录。

我对指针的理解:

记得他们说房子的事,那我就用房子做理解了。假如有A,B,C,D四个房子,且里面分别住着1,2,3,4四个人。那么a,b,c,d则分别为这四个房子的钥匙。于是乎正如C语言里面的表示

a = &1(俺是这么理解的,&1是为了说明住1的那个房间其实就是A)

b = &2

c = &3

d = &4



1 = *a(俺是这么理解的,a钥匙能开的那个房子住的人)

2 = *b

3 = *c

4 = *d

这样的话在进行数据交换的时候,使用指针是很效率的,只不过初学的时候有点难于理解,俺的理解是这样的

四个房间的钥匙还是a,b,c,d但是房子里面的人进行了呼唤,比如:A-->2 B-->1,C-->4,D-->3

这样a = &2,因为房子还在那,开A房间的钥匙还是a,但是人变成了2,所以a = &2了。

想到速度了:其实这也是为什么指针的速度要快一些,俺理解的是有一面是因为指针只是换了房子里面的人,而房子不用动,但是如果不用指针,则相当要再

盖四个房子,里面放上几个复制品(假设人可以复制),这样盖房子肯定要消耗时间呢(其他提升速度的原因俺没想到,俺也不往那么深想了)。

下面为贴代码已作说明:

func interchange(u *int, v *int){

var tmp int

tmp = *v

*v = *u

*u = tmp

}

func main(){

var x int = 5

var y int = 10

fmt.Println(x,y)

interchange(&x,&y)

fmt.Println(x,y)

}

解释:

1、interchange函数:u和v分别为两把钥匙且房子为U和V里面住着1和2 *v = 2 ,*u = 1

2、U住进了2,V住进了1

3、main函数调用的时候&x 其实就是u,&y其实就是v,对应这U房和V房

4、经过交换,5到了V房,10到了U房

5、fmt.Println(x,y)其实这时候只有U的房子住的是10,V的房子里面住的是5,因为是这样理解的,*u,*v
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: