句柄是个什么东西?(百度过,但想再听听大家的解释)
句柄是个什么东西?(百度过,但想再听听大家的解释)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
句柄是个什么东西?(百度过,但想再听听大家的解释)
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(7)
比如你向系统申请一块内存,申请成功后你会得到指向这内存的指针,这指针就是指向内存地址。
而句柄跟这指针类似,他是指向系统的资源。
比如前面有人说到的窗口句柄,就是指向某个窗口的"指针"。
所以你可以通俗地理解成,句柄是一个指针,他指向某个资源。
简单点说,就是一个把柄,你抓住了它的把柄,你就可以操控它,让它听你的话
先不说句柄的内涵,仅仅从我们使用的角度来看。
我们写程序的时候肯定会用到各种各样的资源,比如创建进程,创建窗口。一个窗口创建完之后我们当前写的程序还是要与这个窗口进行交互的,比如修改个标题之类的。一个窗口的存储方式我们是不知道的,因此我们也不知道如何修改这个窗口标题的细节,因此我们只能使用 Windows API。而windows 此刻显示的窗口有好多,因此需要一个值(或者说ID)来标识这个窗口。这个标识可以是数字、字符串等,只要唯一就好(为了方便实现的原因在windows里面这是一个指针)。其他的句柄也是这个意思,一个ID,是我们使用 window API 创建线程、打开文件、创建窗口时候windows 返回给我们的一个ID,以后我们使用这ID来告诉windows API 我们要操作的是哪个东西。
简单一个程序:
显然如果我们知道结构体win 的内部结构,我们可以把
setWidth(p,30);
直接写为h -> p -> width = w;
。可是在 windows 里面,大部分的东西我们都是不知道其内部结构的(没有必要知道,微软也不会告诉我们)。上述代码中我们不需要知道分割线以上的代码(操作系统的实现)只需要知道下面函数的用法就可以写出正确的代码。微软各个数据类型取了个名字叫做句柄。还需要说明的是句柄不能在进程间简单的共享。如果你把一个进程的句柄的值发送给另外一个进程,那么在另外的进程中这个句柄的值不一定是有意义的,即使有意义也不一定指同一个资源。
一般是个资源地址,比如窗口句柄等
一般来说是一个整数值,像身份证一样的某资源唯一标识。
通过这个标识可以对资源进行某种操作。
以上是百度百科中的描述
简单来说 一个句柄表示一个对象或者实例 也就是说 句柄在该系统中是唯一的不会出现重复的
那么在也就是说 你可以根据句柄来获取 该对象或实例。
比方说 你写一个程序 是对 另一个程序的窗体或者控件进行操作的时候 就可以使用句柄来获取该窗体的对象
一般是底层内部数组的下标。用泛了之后,也会是内部一些资源的指针。