指针你真的理解了吗

举报
yd_235704214 发表于 2026/02/20 10:11:43 2026/02/20
【摘要】 无

我们都知道计算机是有内存的 而数据都是放在存储器里面的 我们把存储器中的一个字节称为一个内存 而占用的内存单元不同 整型类的四个单元 字符类的一个单元 你前面也学到过 那我们怎么访问他们? 我们要把每个内存单元编上号 每个内存单元就叫地址 根据编的号可以找到内存单元 这样就找到了 通常这个地址就叫指针
image.png
Short 类型的i是两个字节 我们看到他站了两个地址 也就是两个字节两个地址 2000 到2001 而float类型是4个字节所以是2002 到2005image.png
上面的抽象你可以理解为别名 就是小名 比如我叫 张三 我小名叫洋洋  但都是我image.png
那你会问了 指针变量是什么 他是专门存放地址的变量就叫指针变量

可能你这个不理解 没关系我们一点一点看 i pointer是什么 他就是i pointer里面的值就是2000 那&i不也是2000吗 所以相等 那你有一点不明白了 不是前面说了2000到2001吗 为什么不可以是2001 &i取的是变量 i的起始地址(2000),这是一个规定。

i_pointer是什么?i_pointer是一个指针变量。它自己存储在地址 2004这个位置。它里面存储的值是 2000(这是变量 i的地址)

*i_pointer)是什么?*是解引用运算符,意思是“取出该指针所指向的地址中的内容”。所以,*i_pointer就是:取出 i_pointer的值(2000),然后去内存中地址为2000的地方,看看里面存的是什么。图片显示,地址2000里存储的值是 10。因此,(*i_pointer)这个表达式的结果就是数值 10。这个 10存储在内存的哪个地方?我们看数值 10存储在地址 2000开始的内存单元中。所以,10的地址就是 2000。因此,(*i_pointer)这个值的地址是 2000

这个你明白吗

这三个表达式最终都代表同一个东西——变量 i里面存储的数值。

i就是10

i_pointer:这是一个指针变量,它内部存储的值是另一个变量(即 i)的内存地址。*(星号):在这里是解引用操作符。它的作用是:“取出这个指针所指向的内存地址里存放的值”。*i_pointer:整个表达式的意思就是“取出 i_pointer所指向的那个地址里的值”。因为 i_pointer存储的是 i的地址,所以取出来的就是 i的值 10。

&是取地址操作符。&i表示获取变量 i在内存中的地址。*(&i):外层的 *对刚刚取到的地址进行解引用,即“去这个地址里把值取出来”

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。