指针类型问题??(指针指向问题)

本文介绍如何使用 CWnd* 指针来判断其所指向的对象实际类型,例如判断是否为 CComobox 或其他窗口类型。通过示例代码展示了如何利用 IsKindOf 方法实现这一目的。

我得到窗口的指针CWnd*,  
  请问如果能判断是指向Ccomobox的指针还是指向clist或其他类型的窗口的指针,即如果判断一个指针所致对象的实际类型??? 

----------------------

BOOL   b=pWnd->IsKindOf(RUNTIME_CLASS(CComobox)) 

### C/C++ 中指针指向一个指针的用法 在 C/C++ 中,指针不仅可以指向基本数据类型的变量,还可以指向其他指针。这种机制被称为 **多重指针** 或者 **间接指针**。当一个指针存储的是另一个指针的地址时,它就被认为是指向一个指针。 #### 定义与语法 定义一个指向另一指针指针时,需要使用双重星号 `**` 表示两级间接寻址。例如: ```c++ int a = 10; int *p = &a; // p 是指向 int 类型指针 int **pp = &p; // pp 是指向指针 p 的指针 ``` 在这里: - 变量 `p` 存储了变量 `a` 的地址。 - 变量 `pp` 则存储了指针 `p` 的地址[^4]。 #### 访问值的方式 要访问最终的目标值(即变量 `a`),可以通过两次解引用完成。具体如下: ```c++ printf("Value of 'a' using double pointer: %d\n", **pp); // 这里先通过 *pp 得到 p 的值(也就是 a 的地址),然后再通过 *(p) 获取 a 的值。 ``` 如果只需要获取中间层指针的内容,则只需单次解引用即可: ```c++ printf("Address stored in 'p': %p\n", (void *)*pp); // 此处仅执行了一级解引用 (*pp),得到的是 p 所保存的地址。 ``` #### 实际应用案例 下面给出一段完整的代码展示如何声明并操作指向指针指针: ```c++ #include <stdio.h> int main() { int value = 42; // 创建第一个级别的指针 int *firstLevelPointer = &value; // 创建第二级别指针指向 firstLevelPointer int **secondLevelPointer = &firstLevelPointer; // 输出原始值 printf("Original Value: %d\n", value); // 使用双层指针访问原值 printf("Accessed via second level pointer: %d\n", **secondLevelPointer); return 0; } ``` 此程序展示了如何利用二级指针来修改或读取底层数据[^5]。 #### 功能扩展 除了简单的数值传递外,在函数参数设计中也经常需要用到多级指针的情况,比如动态分配二维数组或其他复杂结构体成员初始化等场景下非常有用。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值