指针地址存储器属于RAM还是硬盘? #包括 int main(){ int num=1234; printf(“%p”、&num); 返回0; } //输出: //0xffffcbfc

指针地址存储器属于RAM还是硬盘? #包括 int main(){ int num=1234; printf(“%p”、&num); 返回0; } //输出: //0xffffcbfc,c,C,0xffffcbfc是RAM还是硬盘驱动器地址内存?严格来说,该代码表现出未定义的行为。您必须将指针转换为void*,因为%p希望: #include <stdio.h> int main() { int num=1234; printf("%p", &num); return 0; } //Ouput: //0xffffcbfc 从C的角度来看,可能还没有确切说明什么样的物理设备拥有这个地址,但在一台典型的计算机上,它将是RAM。它是一个堆栈地址

0xffffcbfc是RAM还是硬盘驱动器地址内存?

严格来说,该代码表现出未定义的行为。您必须将指针转换为
void*
,因为
%p
希望:

#include <stdio.h>
int main() {
    int num=1234;
    printf("%p", &num);
    return 0;
}

//Ouput:
//0xffffcbfc

从C的角度来看,可能还没有确切说明什么样的物理设备拥有这个地址,但在一台典型的计算机上,它将是RAM。

它是一个堆栈地址,在概念上是RAM。它不是一个真正的物理RAM地址(在现代系统中),实际上只反映了内核的簿记功能。

具有HD的计算机上的程序总是由操作系统加载到RAM中并从那里执行。所有地址都将指向RAM


您不能直接从程序寻址HD内存,您必须通过文件系统。

严格来说,当打印变量的地址时,您看到的地址来自虚拟内存(大多数情况下,您将在使用虚拟内存的操作系统上运行程序)

如果您的操作系统不使用虚拟内存,则地址将直接来自RAM


要运行程序,必须将其加载到内存(RAM)中。简而言之,您将无法从硬盘中获取地址。

如何获取表达这些主题的参考资料。
printf("%p\n", (void *) &num);