golang 指针的指针_golang链表反转

golang 指针的指针_golang链表反转指针指针(pointer)是存储一个地址地址:0x16F922D9&取址操作&xx=xx所在的内存地址内存的结构:计算机的内存很大,所以指针(地址)是以16进制表现出来的我们来打印一下变量的地址%d是纯数字,十进制的

指针

指针(pointer)是存储一个地址

地址:0x16F9 22D9

&取址操作
&xx => xx所在的内存地址

内存的结构:
在这里插入图片描述
计算机的内存很大,所以指针(地址)是以16进制表现出来的
在这里插入图片描述
我们来打印一下变量的地址
在这里插入图片描述

在这里插入图片描述
%d是纯数字,十进制的输出
我们用%p,十六进制输出

在这里插入图片描述
在这里插入图片描述
我们发现,每次输出的地址都是一样的
我们可对任何东西取地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
a和b在内存中是否是挨着的,每次输出是否会变化,都取决于系统分配
在这里插入图片描述
在这里插入图片描述
b是指针类型
在这里插入图片描述
a的指针不能赋值给int
在这里插入图片描述

var a int     //a是整数
var b *int    //b是int类型指针(b存的是指向一个int变量的地址)

在这里插入图片描述
在这里插入图片描述
现在b打印出来的是地址
在这里插入图片描述
在这里插入图片描述
我们现在想看看b的地址指向的东西是什么
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
a的地址所指向的就是a本身
在这里插入图片描述

用指针进行操作

指针本身不存储数据的——指针只是一个地址
修改指针所指向的位置,原始数据就变了
a:=5
b:=a

b=99
a=>5

------

a:=5
b:=&a

*b=99
//a=>99

在这里插入图片描述
在这里插入图片描述
因为88赋值给了b指向的位置,b指向的是a啊

所有内存都可读可写,编译器编译如果检测到有const,
就不让取地址,防止你间接修改const修饰的值
注意:const不能取址——导致常量被修改

在这里插入图片描述

在这里插入图片描述

如果我们不使用指针,两个变量进行普通的初始化,然后修改

在这里插入图片描述

在这里插入图片描述
接下来我们对b进行修改
在这里插入图片描述
在这里插入图片描述
a和b是两个空间,只是普通的赋值
在这里插入图片描述
如果我们使用指针,两个变量进行初始化,然后修改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
b只是指针,本来就只有a这个空间

指针总结


指针:
本质上是一个地址,通过"修改指针指向的东西"(*ptr=xx),能够修改原始数据

如果你想修改一个东西,需要不是这个东西的值,需要的是它的指针

在这里插入图片描述

今天的文章golang 指针的指针_golang链表反转分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/65141.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注