编程初体验之句柄的概念及使用示例

句柄是什么?

如大家所了解的,句柄**(handle)** 的英文原意确实是 把手 的意思。在生活中我们打开了一个门把手,那么这个房间就向我们敞开。

放到编程中也是一样的道理。假设有一个资源是在一个房间里,而要进入这个房间,就需要打开门把手(句柄)。只有成功打开这个句柄后,才观察和操作我们指定的资源。

句柄使用示例

下面是以经典的 Windows 编程 为例,"读取文件"

这是一个经典的三步操作流程:

  1. 打开一个句柄,并检查是否成功

  2. 通过句柄对资源进行操作,如读写等等

  3. 关闭句柄,此后该资源不再被程序掌控

    #include <stdio.h>

Windows 编程对很多类型都做了多层封装,如果去查看一下源码,会惊讶的发现其实 HANDLE 是一个 void 类型的指针:

复制代码
typedef void *HANDLE;

虽然在 C 语言和 C++ 中对于 void 的具体归类和含义有一定的差别,但 void 都表示 "不含任何值" 这个概念是一致的。进一步的, void* 是一种特殊的指针,其并不局限于像上节示例中的指针一样与一种具体的类型有所关联,其可以与任何类型的地址进行关联。

相关推荐
别动我齐刘海8 小时前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
傻啦嘿哟9 小时前
英雄联盟皮肤爬虫:爬取全皮肤价格与特效,做比价工具
java·c++·爬虫
码匠许师傅9 小时前
【C++ 面试真题】24. 聊聊 C++ 的时间日期处理
java·c++·面试
闻道且行之10 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
莫浅子10 小时前
day01-USB架构与枚举
c++·单片机·嵌入式驱动
小欣加油11 小时前
leetcode3069 将元素分配到两个数组中I
数据结构·c++·算法·leetcode·职场和发展
不会代码的小猴11 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
沫璃染墨11 小时前
《Qt从零入门系列(六):信号与槽进阶——从多种连接方式到Lambda表达式》
开发语言·c++·qt·代码规范·设计规范·qt5
小小龙学IT13 小时前
ZeroMQ(libzmq)开源消息库深度解析:brokerless 时代的轻量消息内核
c++·开源
Benny_Tang13 小时前
题解:P10230 [COCI 2023/2024 #4] Lepeze
c++·算法