原创文章,若需转载请注明出处!
欢迎扫码关注公众号「Golang来了」或者移步 www.seekload.net,查看更多精彩文章。
什么是指针
写代码的时候,我们通过变量就可以操作存储在内存中的值,进行赋值、加减运算等。大家有没有想过,变量代表什么呢?其实,一个变量对应一段内存空间,这段空间就存储了该变量相对应类型的值。指针的值就对应变量的地址,只通过指针,就可以更新或者读取变量的值,而不需要用到变量名。
上面这段代码,声明了*int
类型的指针变量 ptr
,通过取址运算符&
获得指向整型变量 i
的地址。可以说,指针ptr
指向变量i
,或者说ptr
指针保存了变量i
的地址。
指针声明
通过上面一段话的解释,相信大家对指针有了比较清晰的认识:指针指向一个变量的内存地址。要想使用指针,必须先声明,格式如下:
注意:*int
类型的指针,说明该指针指向的一定是int
类型的变量,*string
类型也类似。
*int
类型的指针,指向的变量若是string
类型的,编译器编译的时候就会报错:
如何使用指针
文章写到这里,关于如何使用指针,其实上文已经列出来了,主要经过三个步骤:声明、赋值和访问指针指向的变量的值
关于空指针
一个指针已声明而没有赋值时,称为空指针,为 nil
。任何类型的指针的零值都是 nil
。
如果ip != nil
为真,那么p是指向某个有效变量。指针之间也是可以进行相等测试的,只有当它们指向同一个变量或全部是nil
时才相等。
指针作为函数参数使用
指针包含的是一个变量的地址,如果将一个指针作为参数传递给函数,就可以通过指针来更新变量的值。
不常用的new函数
给大家介绍下new
函数,内建的new
函数也是一种创建变量的方法,new(type)
表示创建一个type
类型的匿名变量,并初始化为type
类型的零值,返回变量的地址,指针类型为*type
。
用new
函数创建变量和普通变量声明语句方式创建变量没有什么区别,除了不需要声明一个临时变量的名字外。
下面的两个函数有着相同的行为:创建变量,并返回变量地址
每次调用new
函数都会返回新的变量的地址:
new
函数使用的比较少,不过觉得挺有意思的,就在这给大家分享下!实际编程,多的还是使用具体类型创建变量,毕竟更方便,是吧!
(全文完)
扫描上方二维码,欢迎关注公众号「Golang来了」,获取最新精彩文章!