1185907650 发表于 2021-8-21 10:26:52

火山PC指针和地址的区别博客教学

在电脑内存中的每个字节都有一个编号(地址),也就是说地址指向了某个字节数据。指针和地址的最大区别就是指针是有类型的,地址是没有类型的。可以根据指针类型决定访问字节数量。什么是指针:指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。假如程序中有一块内存:https://www.lkuaiy.com/image/editor/1629450135382774.png可以看到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 的值指向的地址)例如:
https://www.lkuaiy.com/image/editor/1629455285078642.png用CE查看程序内存,在代码中 定义了一个p的字符串变量赋值(指针) hello word。然后输出 这个变量的地址: 0000002B7611F568,可以看到这个地址的值是: 00007FF6B2D44F00 也是一个地址https://www.lkuaiy.com/image/editor/1629455498532513.png转到这个地址就可以看到 hello word. 代码中 p 的地址存放的是hello word这个字符串的起始地址。地址就是一个字节在内存中的编号,指针也有一个地址.但这个地址中的值存放的是另一个地址。*注:图中和代码和火山的文本型有所不同附上源码: 示例源码
页: [1]
查看完整版本: 火山PC指针和地址的区别博客教学