社区
C++ 语言
帖子详情
问个基础问题:const CvMat* const * ppSrcImg
bsnry
2012-03-07 10:54:13
这是什么东西???
第一次见过
问题2:
const CvMat* pSrcImg[2]数组作为函数的参数, 会蜕化成什么??
...全文
137
8
打赏
收藏
问个基础问题:const CvMat* const * ppSrcImg
这是什么东西??? 第一次见过 问题2: const CvMat* pSrcImg[2]数组作为函数的参数, 会蜕化成什么??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 楼
open
cv
中矩阵总结
- **函数**: `
Cv
Mat
*
cv
Clone
Mat
(
const
Cv
Arr*
src
, int copy_data = 0)` - **参数**: - `
src
`:源矩阵。 - `copy_data`:如果为1,则复制数据;如果为0,则共享数据。 - **示例**: ```c
Cv
Mat
* M1 = ...
open
cv
中
Mat
、
Cv
Mat
、IplImage、IplImage*之间转换程序
在Open
CV
库中,处理图像数据时,有几种不同的数据结构可供选择,包括`
Mat
`、`
Cv
Mat
`和`IplImage`。这些数据结构各有特点,适应不同的应用场景和编程需求。在实际开发中,有时需要在它们之间进行转换以实现功能的兼容...
Open
CV
Reference Manual v2.1 (March 18, 2010)
- **用途**:用于将数组中的每个元素与一个标量值相加。 #####
cv
AddWeighted - **功能**:计算两个数组加权后的和。 - **参数**: - `
const
Cv
Arr*
src
1`:第一个源数组。 - `double alpha`:第一个数组的权重。...
open
cv
的
cv
Mat
用法小结
inline void
cv
Double
Mat
Print(
const
Cv
Mat
*
mat
) { int i, j; for( i = 0; i <
mat
->rows; i++ ) { for( j = 0; j <
mat
->cols; j++ ) { printf("%f ",
cv
mGet(
mat
, i, j ) ); } printf( "\n" ); } } `...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章