浅谈指针(入门)

浅谈指针

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址

假设这就是一块内存空间。

下面小的格子被称为内存单元->编号(地址)

虚拟地址

CPU会直接生成虚拟地址->直接经过地址线的传递->电信号(它其实就是我们的地址)

                                                       高电频就是1,低电频为0;

计算机上会有32位虚拟地址空间/64位虚拟地址空间

当我们是32位虚拟地址空间,传递过来生成的地址是32位

当我们是64位虚拟地址空间,传递过来生成的地址是64位

32位的地址经过地址线的传递它的二进制序列

00000000000000000000000000000000

00000000000000000000000000000001

……

11111111111111111111111111111111

总共有2^32种序列

通过地址最后去转换去寻找内存中的某个单元

虚拟地址的生成最终还是会转化为物理地址

如果我们能够生成一块地址地址还能找到一块内存单元,那么我们的访问是不是就特别方便呢。

a 占四个字节,就在内存条开辟四个字节大小的空间

每个字节都有编号,那a的真正地址到底是谁

F10调出监控查看地址

这是查看内存的方法

10的二进制序列 1010

a是一个整型,他的二进制位要放在32位里面去看

0000 0000 0000 0000 0000 0000 0000 1010(代表在32位系统下的10)

四个二进制位可以写成一个16进制

00 00 00 0a(10在16进制中就是a)

倒着看就是0a 00 00 00

内存中的每一个字节都有地址

取出a的地址是四个字节的第一个地址

//内存单元有编号(地址/指针){编号,地址,指针这三个其实是一个意思}

int main()

{

    int a = 10;

    //&a;//取地址我们拿到的就是一个地址

    //10要存起来,我们把10给了a,

    //把地址放到pa里面

    int* pa = &a;//*  告诉我们pa是指针,int告诉我们pa指向的a是整型类型

    //pa被称为指针变量

    return 0;

}

指针的储存也会在内存条上开辟一块空间,来储存

*pa;//*是解引用符它就是a

    *pa = 20;

    printf("%d", a);

这时候a就变成了20

总之指针变量是用来存放地址的一种变量

  1. 内存会被划分成小的内存单元,一个内存单元的大小是一个字节(这里还未普及内存四区的知识,后面会讲)
  2. 每个内存单元都有编号,这个编号也被成为:地址/指针
  3. 地址/指针就可以 存放一个变量中,这个变量被称为指针变量
  4. 通过指针变量中储存的地址,就能找到指针指向的空间

    浅谈指针

    内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

    所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。

    为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址

    假设这就是一块内存空间。

    下面小的格子被称为内存单元->编号(地址)

    虚拟地址

    CPU会直接生成虚拟地址->直接经过地址线的传递->电信号(它其实就是我们的地址)

                                                           高电频就是1,低电频为0;

    计算机上会有32位虚拟地址空间/64位虚拟地址空间

    当我们是32位虚拟地址空间,传递过来生成的地址是32位

    当我们是64位虚拟地址空间,传递过来生成的地址是64位

    32位的地址经过地址线的传递它的二进制序列

    00000000000000000000000000000000

    00000000000000000000000000000001

    ……

    11111111111111111111111111111111

    总共有2^32种序列

    通过地址最后去转换去寻找内存中的某个单元

    虚拟地址的生成最终还是会转化为物理地址

    如果我们能够生成一块地址地址还能找到一块内存单元,那么我们的访问是不是就特别方便呢。

    a 占四个字节,就在内存条开辟四个字节大小的空间

    每个字节都有编号,那a的真正地址到底是谁

    F10调出监控查看地址

    这是查看内存的方法

    10的二进制序列 1010

    a是一个整型,他的二进制位要放在32位里面去看

    0000 0000 0000 0000 0000 0000 0000 1010(代表在32位系统下的10)

    四个二进制位可以写成一个16进制

    00 00 00 0a(10在16进制中就是a)

    倒着看就是0a 00 00 00

    内存中的每一个字节都有地址

    取出a的地址是四个字节的第一个地址

    //内存单元有编号(地址/指针){编号,地址,指针这三个其实是一个意思}

    int main()

    {

        int a = 10;

        //&a;//取地址我们拿到的就是一个地址

        //10要存起来,我们把10给了a,

        //把地址放到pa里面

        int* pa = &a;//*  告诉我们pa是指针,int告诉我们pa指向的a是整型类型

        //pa被称为指针变量

        return 0;

    }

    指针的储存也会在内存条上开辟一块空间,来储存

    *pa;//*是解引用符它就是a

        *pa = 20;

        printf("%d", a);

    这时候a就变成了20

    总之指针变量是用来存放地址的一种变量

    内存会被划分成小的内存单元,一个内存单元的大小是一个字节(这里还未普及内存四区的知识,后面会讲)

  5. 每个内存单元都有编号,这个编号也被成为:地址/指针
  6. 地址/指针就可以 存放一个变量中,这个变量被称为指针变量
  7. 通过指针变量中储存的地址,就能找到指针指向的空间
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-Taco-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值