指针

指针本质就是一个地址,告诉我们变量存储在内存的什么位置,程序做的每一件事都要读取或者写入内存。指针只是一个地址,它是一个整数,存储着一个内存地址。

空指针,给指针赋予一个为0的地址,0实际上不是一个有效的内存地址,这就意味着这个指针时无效的,但对于指针来说,内存地址无效是一个可以接受的状态。

 访问变量的地址,我们使用&符号,将&加在变量之前,加入断点对程序进行调试可以看到ptr中存放了var的地址,以16进制形式

 我们可以复制这个地址,打开调试->窗口->内存,将这个地址粘贴进去

 可以看到一个整数是四个字节,var的值8正存在这个地址中。

同样的,对地址进行读写,修改器中保存的数据,我们需要在地址前面加上*

 下图的意思是分配一个8字节的内存,返回一个指向内存首地址的指针

 调用函数memset,使用指定数据填充内存,在内存中直接敲buffer,可以看到他的地址,并且其中存折连续8个值为9的变量

 但是指针本身也是一个变量,所以可以用指针来指向其他的指针(二级指针),在内存中可以查看到buffer中存放着八个9,buffer表示他们的首地址,而ptr表示buffer的地址。调试程序,现在内存窗口输入ptr,可以看到buffer的值

 因为计算机时逆向存储,将20 e1 b0 00逆向输入到窗口中,这个值就是buffer的值,也就是八个9的存储首地址

原文地址:https://www.cnblogs.com/wangtianning1223/p/12626897.html