int*p =(int*)60是什么意思?

Bha*_*tan 14 c pointers

#include <stdio.h>

int main()
{
    int *p = (int*) 60;    --- Line 1
    int *q = (int*) 40;    --- Line 2
    printf("%d", p-q);    //Output is 5
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下这个程序的输出吗?

orl*_*rlp 9

这意味着为指针分配整数值的(实现定义的)操作发生.这通常意味着p指向内存地址60q地址40.这些存储器地址可以在虚拟存储器,硬件存储器中,并且许多实现具有用于这些的不同转换例程.

由于这是实现定义的任何事情都可能发生,正如您的实现所描述的那样.

但这不完全没有价值吗?

这肯定不是,它使用了大量的嵌入式硬件编程访问某些功能或调用内置功能.


您系统上最有可能int是4字节宽,所以p - q相等(60 - 40) / 4 == 5.


mat*_*way 8

p指向内存地址60q指向内存地址40.那么可能你的架构有4个字节的ints,所以p - q等于5((60 - 40)/ 4).