指针你真的理解了吗
我们都知道计算机是有内存的 而数据都是放在存储器里面的 我们把存储器中的一个字节称为一个内存 而占用的内存单元不同 整型类的四个单元 字符类的一个单元 你前面也学到过 那我们怎么访问他们? 我们要把每个内存单元编上号 每个内存单元就叫地址 根据编的号可以找到内存单元 这样就找到了 通常这个地址就叫指针

Short 类型的i是两个字节 我们看到他站了两个地址 也就是两个字节两个地址 2000 到2001 而float类型是4个字节所以是2002 到2005
上面的抽象你可以理解为别名 就是小名 比如我叫 张三 我小名叫洋洋 但都是我
那你会问了 指针变量是什么 他是专门存放地址的变量就叫指针变量
可能你这个不理解 没关系我们一点一点看 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):外层的 *对刚刚取到的地址进行解引用,即“去这个地址里把值取出来”
- 点赞
- 收藏
- 关注作者
评论(0)