首页 > 解决方案 > 这两个操作有什么区别?

问题描述

我正在学习 C,我看到了这段代码,但我看不出有什么区别。有人可以解释一下吗?谢谢。

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int addressAsInt = 0x61FF08;
    printf("address = %p\n", addressAsInt);
    int address2AsInt = 0x61FF14;
    printf("address2 = %p\n", address2AsInt);
    printf("rest = %d\n", address2AsInt - addressAsInt);

    int* address = (int*) 0x61FF08;
    printf("address = %p\n", address);
    int* address2 = (int*)  0x61FF14;
    printf("address2 = %p\n", address2);
    printf("rest = %d\n", address2 - address);

    return 0;
}

第一个差异输出 0000000C 和第二个 00000003。我理解第一个但不理解第二个。

标签: c

解决方案


第一个操作是两个十六进制之间的简单差异(12 = C 十六进制)。

第二个操作是两个指针之间的差异:它给出了可以容纳在两个指针的各个目标之间的相同类型元素的数量。


推荐阅读