社区
C++ 语言
帖子详情
问个基础问题:const CvMat* const * ppSrcImg
bsnry
2012-03-07 10:54:13
这是什么东西???
第一次见过
问题2:
const CvMat* pSrcImg[2]数组作为函数的参数, 会蜕化成什么??
...全文
134
8
打赏
收藏
问个基础问题:const CvMat* const * ppSrcImg
这是什么东西??? 第一次见过 问题2: const CvMat* pSrcImg[2]数组作为函数的参数, 会蜕化成什么??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qscool1987
2012-03-08
打赏
举报
回复
[Quote=引用楼主 bsnry 的回复:]
这是什么东西???
第一次见过
问题2:
const CvMat* pSrcImg[2]数组作为函数的参数, 会蜕化成什么??
[/Quote]
首先const CvMat* pSrcImg[2]会看做是const CvMat** pSrcImg;这个没问题吧
pSrcImg是一个数组,里面的元素是指针,指向CvMat类型
那继续看const修饰
比如这样的const CvMat* p;你明白它指向的内容不能改变
如果是这样const CvMat* const p;那么不仅指向的内容不能改变,而且他本身的值(也就是说p不能改变)
好了,在看const CvMat** pSrcImg;
它也只是一个指向CvMat*类型的指针罢了,前面加上const说明它指向的内容不能改变,那么它指向的内容是
CvMat*,也是一个指针,保存了一个地址,这个地址值是不能改变的,但是这个地址里面的值是可以改变的
但是如果改成:const CvMat* const* pSrcImg;那么一样来分析,前面一个const和上面一样解释,那中间这个你看是修饰 *,一级指针相当于const CvMat* p,这个时候就说明pSrcImg指向的指针再指向的内容不可以被修改
甚至还可能更复杂
const CvMat* const* cosnt pSrcImg;
不过一样分析
先把const全拿掉,那就是一个二级指针
然后把最左边这个加上去
变成const CvMat** pSrcImg;解释同上
然后把中间这个加上去,把左边这个拿掉
CvMat*const* pSrcImg;分析同上
再分析最后一个
CvMat** const pSrcImg;
修饰的是一个二级指针,不管它几级都是保存一个地址,说明它保存的地址不能被修改
--------------------------
像这种问题,*号多了你可能会觉得麻烦,但是你只要掌握一个规则就不会出错
你就看它右边的*号有几个,有几个*号就是修饰这个几级指针指向的内容罢了。如果没有就是修饰本身。
xiyoulaoyuanjia
2012-03-07
打赏
举报
回复
问题一:如下图
问题二
const CvMat**
bsnry
2012-03-07
打赏
举报
回复
3楼
gotojyh
2012-03-07
打赏
举报
回复
数组做参数变成指针
所以应该是 **
同意 pengzhixi
bsnry
2012-03-07
打赏
举报
回复
以前只见过: char const * p;
p是一个一级常量指针
把 char换成 const CvMat*
变成:const CvMat* const* p;
p指着一个常量指针。。。。。
一个指针能够指向一个指针,那么这个指针必须是二级指针啊。。。。
p是几级???? 变成了二级???
[Quote=引用 2 楼 pengzhixi 的回复:]
const CvMat* const * ppSrcImg;就是一个2级指针。
ppSrcImg指向的类型为const CvMat*const 也就是说ppSrcImg指向的元素类型本身是一个指针,而且该指针本身的指向不能被修改而且该指针指向的CvMat元素也不应该被修改。
const CvMat* pSrcImg[2]蜕化为const CvMat**
[/Quote]
pengzhixi
2012-03-07
打赏
举报
回复
const CvMat* const * ppSrcImg;就是一个2级指针。
ppSrcImg指向的类型为const CvMat*const 也就是说ppSrcImg指向的元素类型本身是一个指针,而且该指针本身的指向不能被修改而且该指针指向的CvMat元素也不应该被修改。
const CvMat* pSrcImg[2]蜕化为const CvMat**
bsnry
2012-03-07
打赏
举报
回复
高手呢, 坐等高手
bsnry
2012-03-07
打赏
举报
回复
3 楼
移动最小二乘图像变形技术
const
Cv
Mat
* Get
Mat
() { return m_pAffine_m2n3; } std::string txt()
const
{ std::ostringstream o; o << "Affine
mat
rix: \n"; for (int i=0; i; i++) { for (int j=0; j; j++) o (m_pAffine...
Open
CV
与QT开发时一些转换函数.zip
Mat
Widget::QImage_to_
cv
Mat
(QImage image) (4). 将
Mat
图片转为QImage格式 QImage Widget::
Mat
_to_QImage(
const
Mat
& Input
Mat
) (5). QLabel显示函数 void Widget::show_face(IplImage*
img
)
cv
Recode.c
pp
:48:21: error: cannot convert '
const
cv
::
Mat
' to '
Cv
Mat
*' in initialization
Cv
Mat
*sr
问题
描述: CTag-develop/
src
/cctag/filter/
cv
Recode.c
pp
:48:21: error: cannot convert '
const
cv
::
Mat
' to '
Cv
Mat
*' in initialization
Cv
Mat
*
src
Cv
Mat
=
img
Gray
Src
; 解决方法,将
img
Gray
Src
前的
const
删掉 .....
cv
::
Mat
与
Cv
Mat
理解
后来跟踪查看了定义,才知道原来
cv
::
Mat
是一个类(Class),而
Cv
Mat
是一个Struct,从类型上就可以知道二者存在很大区别。前者除了几个成员变量之外还有很多的成员函数和重载函数,可以实现很多的图像数据处理功能,...
解决ubuntu22.04编译报错error: ‘void* memcpy(void*,
const
void*, size_t)’ writing to an object of ~
ubuntu22.04在编译一个工程文件时,报错: ../common/libs/3rdparty/open
cv
3/linux-x86-64/include/open
cv
2/core/types_c.h:461:35: error: ‘void* memcpy(void*,
const
void*, size_t)’ writing to an object of ...
C++ 语言
64,681
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章