c++学习备注3
来源:互联网 发布:阿里云的dns怎么设置 编辑:程序博客网 时间:2024/06/12 13:25
在看rob hess 的sift代码时看到这样的结构,因为对c++没什么深刻的了解,所以不是很明白,查了下。
struct feature
{
。。。
void* feature_data; /**< user-definable data */
};
feature结构中有一个void指针。void指针可以指向任意结构,不过在读取指针指向的值时必须进行强制类型转换。
代码中有这样的转换代码
#define feat_detection_data(f) ( (struct detection_data*)(f->feature_data) ),
能看懂代码,对渊源不了解。也佩服c++的用法。
不过下面的代码
ddata = feat_detection_data( feat );直接把指针转化成一个detection_data的指针,这个做法提高了feature结构的灵活度。
但是事先没有给这个指针区域分配内存。
一般的用法如下
1.int
nValue = 5;
2.
void
*pVoid = &nValue;
void指针指向了一个内存区域。
但是本例中,没有指向一个内存区域。只是一种指针指向的数据类型的转换。随后就直接对这个区域进行读写。
void指针是如何分配内存的呢。
- sift学习备注3
- c++学习备注3
- 学习备注
- sift学习备注
- sift学习备注2
- c++学习备注
- opencv学习备注
- opencv 学习备注2
- sift学习备注5
- surf学习备注1
- surf学习备注2
- 外部学习资源备注
- c++ 学习备注4
- html5 学习备注 1
- 【SQL】SQL学习备注
- mysql event 学习备注
- HTML学习备注
- Oracle DB 学习备注
- C++编程思想(卷二):输入输出流
- Tuxedo 的配置管理简要说明(一)
- 80后夫妻写照~~~看后你还想结婚么?
- J2EE程序员需掌握的技术
- Adobe Acrobat集成更新补丁的方法
- c++学习备注3
- 基于J2ME的SVGT移动应用(二) image process view svg
- Tuxedo 的配置管理简要说明(二)
- DataGrid导出到Excel
- MyEclipse连接MySQL
- Tuxedo 的配置管理简要说明(三)
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
- 浅谈HTTP中Get与Post的区别
- Tuxedo 的配置管理简要说明(四)