• 指针


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

    空指针,给指针赋予一个为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的存储首地址

  • 相关阅读:
    下载文件c#
    系统蓝屏重起:如何修改设置,记录系统蓝屏重起的错误
    Repeater中的行数
    2010617 重装系统遇到的问题
    ajax 修改select的值 返回的值中有逗号
    GPS数据接收 串口调试感受
    Nios II实用之音频控制
    【笔记】VB控件MSComm功能介绍
    【摘】程序员版同桌的你
    AJAX Control Toolkit ——DragPanelExtender(拖拽面板)
  • 原文地址:https://www.cnblogs.com/wangtianning1223/p/12626897.html
Copyright © 2020-2023  润新知