讲述两点: 1、反汇编下的p与*p 2、有关指针初始化的金科玉律int* p;p与*p,相信很多人都在这犯过迷糊,最后在死记硬背中记住了他们的区别,但实际怎样,也没有亲自到内存中看过,这里,就带您到内存中看看,到反汇编中溜溜,看看p与*p的庐山真面目。简单的程序:
先看反汇编代码分析:(如果您不理解为什么[ebp-4][ebp-8]处存放的是函数第一和第二个局部变量,您可先阅读《C++反汇编代码分析--函数调用 》)看到很多人问 指针p指向一个地址,那指针p有自己的地址么?答案是肯定的,通过上面的分析可以看出 p的地址是0012ff40,此地址处存放的是变量i的地址。除了通过这种方式,其实还有一种可输出的方式查看p自己的地址,int*(*q)=&p;则q存放的就是p的地址,可以自己输出查看一下。再从内存验证以下是否真的如此:我们已经分析出来p的地址是0012ff40,可以直接在内存观察器中看一下,如图: