♨ 前言
最近在家较闲,没事就学点基础知识,整天在上层晃,感觉晕的厉害,接地气。关于指针我上学的时候学过一点,我的老师说“指针很难呢“,当时以为这老师挺谦虚的。后来才知道其实他想说"我也搞不懂",不懂就别乱比喻的了,把指针比喻成门牌号,信封邮寄地址,现在我看到指针就想起门牌号,信封地址。想想都是泪!
♨ 地址
说到指针,先说说地址,看一段小程序
每当我看到指针的输出 像这种"0x7fff8b6a378c"时候,头都大了,那时候老师说是地址,搞得糊里糊涂的。当使用80386时,我们必须区分以下三种不同的地址:逻辑地址、线性地址、物理地址;在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干;
比如上面那个"0x7fff8b6a378c" 就是逻辑地址。逻辑地址不是被直接送到内存总线,而是被送到内存管理单元(MMU)。MMU由一个或一组芯片组成,其功能是把逻辑地址映射为物理地址,即进行地址转换。下面是转换关系图。