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

句柄是什么?

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

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

句柄使用示例

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

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

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

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

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

    #include <stdio.h>

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

复制代码
typedef void *HANDLE;

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

相关推荐
啦啦啦啦啦zzzz44 分钟前
算法:回溯算法
c++·算法·leetcode
Lzg_na1 小时前
订阅发布模块事例
c++
郝学胜-神的一滴1 小时前
[简化版 GAMES 104] 现代游戏引擎 02:拆解现代游戏引擎5+1层级架构,吃透引擎底层核心逻辑
c++·unity·架构·游戏引擎·图形渲染·unreal engine·系统设计
汉克老师1 小时前
2026年CSP-J初赛分数线-----预测
c++·csp-j·小学生·学c++编程
脱胎换骨-军哥1 小时前
C++数据库存储引擎内核开发:B+树索引与MVCC并发控制的完整实现
数据库·c++·b树
小保CPP2 小时前
OpenCV C++将多张图像合并为webp动图
c++·人工智能·opencv·计算机视觉
乐观勇敢坚强的老彭3 小时前
信奥C++一维数组笔记
开发语言·c++·笔记
码上有光3 小时前
异常和智能指针
java·大数据·c++·servlet·异常·智能指针
王维同学3 小时前
[原创][Windows C++]Explorer Shell 扩展、图标覆盖与 COM 服务器定位
c++·windows·注册表
code_pgf3 小时前
C++ 工程架构设计规范
c++·机器人