在C语言中,指针变量的值就是一个内存地址,&运算符的作用也是取变量的内存地址。

#include<iostream> 
using namespace std;

int a = 1, b = 255;
int main(){
    int *pa = &a;
    cout << "pa = " << pa << endl;
    cout << "&b = " << &b << endl;
    return 0;
}
/*运行结果*/
pa = 0x472010
&b = 0x472014
//代码中的a, b是全局变量,它们的内存地址在链接时就已经决定了,以后再也不能改变。

//如果物理内存中这两个地址被占用了怎么办?

//这些内存地址都是虚拟地址,需要通过CPU转换才能对应到物理地址。
//而且每次程序运行时,操作系统都会重新安排虚拟地址和物理地址的对应关系,哪一段物理内存空闲就使用哪一段。
  • 虚拟地址 <---> 中间层思想
    • 使不同程序的地址空间相互隔离
    • 提高内存使用效率
posted on 2020-02-21 16:37  xiaobaizzZ  阅读(310)  评论(0编辑  收藏  举报