火山PC指针和地址的区别

本文探讨了内存中字节的地址概念,指出每个字节都有一个唯一的编号。指针作为内存地址的变量,具有特定类型,决定了访问的字节数量。通过例子解释了指针如何存储和访问内存中的数据,并讨论了在32位程序中指针占用4个字节。此外,还阐述了字符串变量如何在内存中表示,以及如何通过地址查找存储的字符串。最后,通过实际代码展示了如何查看程序内存并理解指针变量和其所指向的内存地址之间的关系。
摘要由CSDN通过智能技术生成

在电脑内存中的每个字节都有一个编号(地址),也就是说地址指向了某个字节数据。

指针和地址的最大区别就是指针是有类型的,地址是没有类型的。可以根据指针类型决定访问字节数量。

什么是指针:指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。

假如程序中有一块内存:

可以看到  0x00DDF640 和 0x00DDF644 他们之间相差 4 , 而他们中间相差4个字节。

因此 48 的地址是0x00DDF640,23 的地址是0x00DDF644,

可以判断 48 后边 f6 的地址是 0x00DDF641 

dd 的地址是 0x00DDF642 , 00 的地址是 0x00DDF643 。也就证明了 每个字节都有一个地址

地址 0x00DDF640 起始位置有4个字节数据可以把他看成一个整数指针类型(32位程序中指针类型占4个字节)这个里访问4个字节 : 48 f6 dd 00  ,(因大小端模式,需将数据反过来看)也就是 00 dd f6 48  ,0x00DDF640 代表一个指针,00 dd f6 48是这个指针指向的地址).

假如有一个文本型变量 str = "hello word" ,而 变量 str 也就是地址 0x00DDF640  ,str的值是  0x00DDF648 , “hello word”所在的地址就是0x00DDF648 (str 的值指向的地址)

例如:

用CE查看程序内存,在代码中 定义了一个p的字符串变量赋值(指针) hello word。然后输出 这个变量的地址: 0000002B7611F568,可以看到这个地址的值是: 00007FF6B2D44F00 也是一个地址

转到这个地址  就可以看到 hello word. 

代码中 p 的地址存放的是hello word这个字符串的起始地址。地址就是一个字节在内存中的编号,指针也有一个地址.但这个地址中的值存放的是另一个地址。

*注:图中和代码和火山的文本型有所不同

附上源码: 示例源码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值