如你所知在编程中我们常常会遇到一个叫做句柄的概念。特别是在 Windows 编程中使用句柄是避免不了的。进一步去搜索句柄handle这个单词的原始含义时会搜到 handle: n. 把手把柄 等概念让人更是一头雾水。因此在使用过程中很多新手常常会把句柄和指针这两个概念进行混淆。如果你也有这样的疑惑那么请带着疑惑一起来阅读下文吧。指针是什么在了解句柄和指针的异同前我们得重新回顾一下大家都比较熟悉的指针。那么指针到底是什么呢指针属于一种派生复合类型是由其他类型衍生出来的如函数或对象类型而其值是一个整型数字用于表示地址值。在不考虑void*这种特殊指针情况下可以通过解引用运算符*来对指向内容进行间接的操作。如果是函数指针则结果为函数指示符。如果是对象指针则结果为对象的引用。下面是一个学习指针的经典入门示例“两数交换”#include stdio.h ​ void swap(int* a, int* b) { int tmp *a; *a *b; *b tmp; } ​ int main() { int x 3; int y 4; swap(x, y); printf(x %d y %d\n, x, y); }这里我们假设两个变量x, y的地址分别是0x0010和0x0020。然后调用swap(*, *)函数并将地址传入此时函数的两个参数记录着0x0010和0x0020。然后在函数体内通过解引用运算符*获得x, y的实体这样就能实现跨模块对我们希望操作的对象进行操作。