Visual C++ POSITION用法解释,POSITION是什么?
2022/4/28 9:12:47
本文主要是介绍Visual C++ POSITION用法解释,POSITION是什么?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
POSITION是MFC模板类库中经常使用的一个数据类型,我们从它的定义可以看出,其实,它就是一个指针。
// abstract iteration position
struct __POSITION { };
typedef __POSITION* POSITION;
MFC给出的注释是:一个抽象的迭代位置,既然是抽象,也就是没有给定具体的数据类型,以满足不同的模板参数的需要。
在CList中,经常会用到POSITION作为引用参数,或者作为返回值。下面,我们就举2个简单的例子,来帮助大家理解这个数据类型,不过在此之前,我要啰嗦一下,因为有很多人对__POSITION这个空结构体,表示怀疑,似乎这成为了他们理解的障碍。既然是一个空的结构体,怎么能用它来定义指针呢?
其实,C++编译器,不会将一个空的结构体完全看成是空的,编译器会为它分配1byte的内存,其实说白了__POSITION这个结构体,就相当于一个unsigned char的类型,所以__POSITION也就相当于是unsigned char,也就是Windows里面的BYTE类型,从而POSITION也就有了一个可以等价的形式,那就是BYTE*。
我们举CList中2个典型的成员函数作为讲解的重点,当然,大家应该知道CList是一个链表数据结构。下面看这两个函数:
1. POSITION GetHeadPosition() const;
显而易见,这个函数,是用来获取链表头的,它的返回值是一个POSITION,其实也就是一个指针。这个指针代表了谁?当然,就是你一直想要的链表头在链表中的指针,这个指针是new出来的,你绝对不能擅自的将这个指针delete掉。
2. TYPE& GetAt(POSITION position);
这个函数,看起来,比较怪。它的唯一的入参是一个指针,其实,有可能就是你刚刚用GetHeadPosition获得的头节点指针。这个函数的意思,也就是,需要你提供一个节点的地址,然后,CList会遍历整条链,去寻找并返回符合这个地址的节点数据。
这篇关于Visual C++ POSITION用法解释,POSITION是什么?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享
- 2024-12-25flutter项目 as提示Cannot resolve symbol 'embedding'提示什么意思?-icode9专业技术文章分享
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享
- 2024-12-24更改 Git 本地分支关联的远程分支是什么命令?-icode9专业技术文章分享