初学者,关于 C 句柄的示例

发布于 科技 2024-08-21
13个回答
  1. 匿名用户2024-02-01

    intprt 的例子真的很难找到。

    因为它很少在 C 语言中显式使用。 大多数包(如 process、fileinfo 等)都依赖于句柄与操作系统进行通信。

  2. 匿名用户2024-01-31

    你可以把一个句柄想象成一个对象名,例如,有一个类 class1,你声明一个类的对象,class1 c1 = new class1(); 那么 C1 是一个句柄,它表示 class1 类的一个对象,通过它可以调用该类的所有方法和属性。 对象是分布在内存堆中的属性的复杂集合,句柄只是对象的代号,只有几个字符,存储在内存堆栈中。 就像一个人的名字一样,张三是一个人的名字,它是一个人的把柄(张三的把柄只是两个汉字,但它所代表的人张三是一个复杂的生命形式——一个人)。

    句柄是用于标识对象或项目的标识符。 应用程序几乎总是通过调用 Windows 函数来获取句柄,然后其他 Windows 函数可以使用它来引用相应的对象。 如果你想更彻底地了解句柄,我可以告诉你,句柄是指向指针的指针。

    我们知道指针是内存地址。 启动应用程序时,组成程序的对象驻留在内存中。 简单地说,只要我们知道这个内存的第一个地址,我们似乎可以随时访问这个地址的对象。

    如果你这样做了,你就大错特错了。 众所周知,Windows是一个基于虚拟内存的操作系统。 在这种系统环境中,Windows 内存管理器经常在内存中来回移动对象,以满足各种应用程序的内存需求。

    对象已移动,这意味着其地址已更改。 如果地址总是这样变化,我们应该去**找哪一个? 为了解决这个问题,Windows操作系统为所有应用程序释放了一些内存单元,以注册每个应用程序对象的内存地址的变化,并且前者的物理地址在系统运行过程中保持不变。

    Windows 内存管理器移动对象在内存中的位置后,会及时通知相应的句柄对象的新地址以进行更新。 这样,只要我们知道句柄,我们就可以间接知道对象在内存中的位置。 此地址在加载对象时由系统分配,并在卸载对象时释放给系统。

  3. 匿名用户2024-01-30

    不知道这篇文章对你有没有帮助,看看吧。

  4. 匿名用户2024-01-29

    我通常说获取控件的句柄。

    实际上,这是为了获取此控件的操作数。

    它可以通过 FindControl 或 Control ID 在程序中获取。

  5. 匿名用户2024-01-28

    句柄的概念在 C 中很少使用,大多数 Windows 句柄都封装在类中。

    例如,表单类、控件类、串行端口类、文件类等,这些类对象实际上对应于一个句柄。 通常,此句柄存储在这些对象的成员属性中。 比如。

  6. 匿名用户2024-01-27

    因为 C 很多东西只是直接拖到窗口里,所以会造成对这方面事物的理解差。 下面是一个示例:

    首先,定义一个类 t{}

    后面跟着以下句子:

    t tjubing;和 t tjubing=new t();

    这两句话是什么意思?

    第一句话是,我有一个叫做 tjubing 的句柄,它可以指向像 t 这样的实例化对象,但我只定义了这个句柄,我不用它来指向特定的实例。

    第二句话是,有一个这样的句柄,我创建了一个类 t 的实例,我用它来指向该实例。

    接下来,我们再举一个例子,t tjubing;

    t=new t();

    t=new t(c);C 代表参数,假设有两个构造函数来显示与上述的差异。

    所以谁不指向,指向 t 的第二个实例,第一个没有句柄可以指向,一般来说,你不能操纵它。

    句柄类似于指向 C 的指针。

    最后,c的优点之一就是简单易学,因为很多东西不需要你敲**,你可以直接使用; 缺点也在这里,使你的许多面向对象的概念变得不清晰。

  7. 匿名用户2024-01-26

    句柄是系统在生成对象之前分配的 ID。 由于它是系统分配的 ID,因此每个 ID 必须不同。

    可以这样理解,国家(理解为制度),国家给每个人分配一张身份证(理解为一个把手),有了身份证,就可以办理银行业务,可以办理签证,可以移民,可以享受中国公民应该拥有的服务。 但如果你不这样做,你就是一个黑人家庭,你什么都做不了。

    你创建一个windowns表单应用程序,运行后,你的表单本身上的所有控件都有一个ID,你可以拿着这个ID来获取控件或表单可以得到的所有服务,系统在电脑中提供的服务是API(Application Programming Interface)调用,你有一个句柄,你可以放心地向系统提出调用API服务。

  8. 匿名用户2024-01-25

    句柄是资源唯一可区分的标志,其数据是四字节整数,只有当资源被系统在内存中分配时才会生成,例如:应用实例是资源,当你运行程序时,操作系统为实例分配内存空间,如何让操作系统管理这个对象? Windows 的做法是给这个程序的实例发一个通行证(想象一个句柄),当实例拿到这个通行证时,实例可以调用 Windows 的 API 或其他资源,就像学生入学上学,学校发通行证一样,你可以去食堂, 图书馆,但是你不能随便进出校长办公室,这和指针不同,有了指针,你可以进出任何地方,但句柄是权威的,这是由系统决定的。

    窗口是在创建窗口时生成窗口句柄的资源。

    一个 **,在程序中是一个位图句柄。

  9. 匿名用户2024-01-24

    简单地说,它是系统中资源的 id 值(表示为整数)。

  10. 匿名用户2024-01-23

    我不知道,我没听说过,顶部!

  11. 匿名用户2024-01-22

    它实际上是系统中的许多形式。

  12. 匿名用户2024-01-21

    句柄 c 丢弃指针,而是引用我们可以将其视为实际内存地址句柄的类型。 考虑到这一点,c 引用类型的行为是明确的。 看看下面的这个应用程序:

    using system;

    class element

    class test

    static void main()

    程序编译并执行输出:

    我们看到,即使值的传递方式仍然会更改为类型元素的对象 t。

  13. 匿名用户2024-01-20

    句柄不是 C 中的概念,而是 Win32 API 中的概念。

    C 通常使用 DllImport 来获取窗体或其他对象的句柄。

    句柄可以理解为用于标识内存中“资源”的“资源”,例如文件、内存块、菜单、控件、窗口等。 操作系统通过句柄定位核心对象和系统资源。

    有些人认为句柄是指针,但实际上,句柄和 C++ 中的指针是两个完全不同的概念。 句柄只是一个 32 位整数,用于管理 Win32 中某个系统或进程的对象,可以理解为对象的“索引”(相当于公民的 ID 卡,ID 卡标识唯一对象),这个索引更像是一个映射关系(从句柄到对象指针的映射), 而不是“指向对象的地址”的纯粹意义。

    指针比较直观,它直接对应数据在内存中的地址,获取指针后可以自由修改地址中的数据。 为了安全起见,Windows系统不希望普通程序轻易修改其内部数据结构,因此Windows为GlobalAlloc等函数声明的每个内存区域注册一个句柄,在调用API函数时,通常只使用这个句柄间接访问一个内存区域。

相关回答
18个回答2024-08-21

同一个外部变量在两次函数调用期间保留其先前的值,这意味着放置在堆中的变量(全局变量以及用静态修饰的局部变量都放置在堆中)不会在函数调用结束时被销毁(函数中定义的局部变量放置在堆栈中, 并且堆栈在函数调用完成后被销毁,除非用 static 修改它),并且它的值将保持不变,直到它被函数重新分配。 >>>More

14个回答2024-08-21

如果想使用gcc编译器,推荐code::block,本软件是用C++编写的,之前开发的C++已经停止更新,本软件是用C++编写的; >>>More

10个回答2024-08-21

这是所有窗口都可以响应的消息,指示窗口已创建。 使用此窗口是安全的。 >>>More

4个回答2024-08-21

1 问:CD测试和CD测试有什么异同? 是对工作目录的更改,还是对目录的简单输入? >>>More

13个回答2024-08-21

我觉得还是多看一些关于人体解剖学的书比较好,把素描模型的姿势和人体的解剖学联系起来,这样就可以在短时间内掌握结构,加上一些必要的辅助线条,更准确地把握模型的姿势。 褶皱的细节应集中在一些对模特姿势有影响的相关褶皱上。 与谁一起临摹作品并不重要,关键是要学会如何使用画家的线条。