zoukankan      html  css  js  c++  java
  • C编程中HANDLE变量是什么?

    最近在学习C语言,编写一个贪吃蛇程序时遇到HANDLE变量,边上网查了下资料;对于平常使用,我觉得大概理解下面的内容就可以了:

    1.Handle,也叫句柄,实际上是一个数据,是一个Long (整长型)的数据,是一种指向指针的指针。

    2.Handle的含义:是一个标识符,是拿来标识对象或 者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只 一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。

    3.为什么要设置HANDLE,直接用指针调用对象不可以吗?Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来 回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就 可以间接地知道对象具体在内存中的哪个位置。

    即:

    理论上:句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地 
    址(不稳定)→实际对象

    功能上:句柄是个指针,但它是个二级指针(指向指针的指针).如果你拥有了一个对象 
    的句柄. 你就可以操作对象的所有公共方法. 

    以上理解来自下面这两篇链接,更细致的解释可戳:

    https://www.cnblogs.com/Bryantly2rase/p/4671147.html

    https://social.msdn.microsoft.com/Forums/vstudio/en-US/9e73236c-dbe1-4493-ac07-c0c963e35852/what-is-handle-in-c-programming?forum=netfxbcl

  • 相关阅读:
    爬虫——Selenium与PhantomJS
    爬虫——多线程糗事百科案例
    爬虫——json模块与jsonpath模块
    爬虫——使用BeautifulSoup4的爬虫
    爬虫——BeautifulSoup4解析器
    爬虫——爬取百度贴吧每个帖子里面的图片
    爬虫——爬虫中使用正则表达式
    爬虫——正则表达式re模块
    爬虫——requests模块
    爬虫——Handler处理器 和 自定义Opener
  • 原文地址:https://www.cnblogs.com/debug-the-heart/p/12303480.html
Copyright © 2011-2022 走看看