递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 4173|回复: 0
打印 上一主题 下一主题

[视窗] 火山PC指针和地址的区别博客教学

[复制链接]

359

主题

6675

帖子

1万

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
16916
跳转到指定楼层
楼主
发表于 2021-8-21 10:26:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在电脑内存中的每个字节都有一个编号(地址),也就是说地址指向了某个字节数据。
指针和地址的最大区别就是指针是有类型的,地址是没有类型的。可以根据指针类型决定访问字节数量。
什么是指针:指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。
假如程序中有一块内存:
可以看到  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这个字符串的起始地址。地址就是一个字节在内存中的编号,指针也有一个地址.但这个地址中的值存放的是另一个地址。
*注:图中和代码和火山的文本型有所不同
附上源码: 示例源码
火山安卓+PC多部课程尽在:www.lkuaiy.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-9-29 06:47 , Processed in 0.087926 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表