• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C编程中HANDLE变量是什么?

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近在学习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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PAT乙级1038统计同成绩的学生C++版发布时间:2022-07-13
下一篇:
C++的四种cast操作符的区别--类型转换发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap