C如何将二维数组作为返回值

   做大作业遇到这样一个问题:在子函数里申请了一个二维数组,在主函数里要用到二维数组里的数据,但是在主函数里又不能提前申请(因为不知道数组长度),所以需要将数组return得到。

   子函数:

float ** SURFCompare(Mat srcImage1, Mat srcImage2)//注意子函数返回值为float **
{...float **point;//定义二维指针point = (float**)malloc(sizeof(float) * viewMatches.size());//为指针申请空间,
for (int i = 0; i < viewMatches.size(); i++)//viewmatch.size是行数
{point[i] = (float *)malloc(sizeof(float) * 4);//4是列数}	for (int i = 0; i < viewMatches.size(); i++)//将匹配的特征点坐标赋给point,给数组赋值
{index1 = viewMatches.at(i).queryIdx;index2 = viewMatches.at(i).trainIdx;point[i][0] = keyPoints1.at(index1).pt.x;//u1point[i][1] = keyPoints1.at(index1).pt.y;//v1point[i][2] = keyPoints2.at(index2).pt.x;//u2point[i][3] = keyPoints2.at(index2).pt.y;//v2
}return point;//返回数组指针
}
   主函数中调用
int main()
{...//调用surf子函数,得到返回的二维数组float **matchpoint = SURFCompare(srcImage1, srcImage2);//输入两幅图                                                   //调用最小二乘法求解三维坐标,用到二维数组solveab(matchpoint, pointnum, M1, M2);//传入匹配点坐标,匹配点对个数,投影矩阵for (int i = 0; i < pointnum; i++)//释放matchpoint,pointnum是行数free(matchpoint[i]);free(matchpoint);
}
注意:1、如果在主函数中已经可以计算得到数组的长度,就可以在主函数中malloc动态申请一个数组,调用子函数改变数组的 值;

      2、如果主函数中不计算就可以知道数组长度,可以直接静态定义二维数组;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring的IOC底层实现

IOC的底层实现 续图&#xff1a; 转载于:https://www.cnblogs.com/phyger/p/10027712.html

python传文件给java_python使用简单http协议来传送文件

python使用简单http协议来传送文件&#xff01;在ubuntu环境下&#xff0c;局域网内可以使用nc来传送文件&#xff0c;也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServer ${port}来启动服务默认的端口是8000&#xff0c;另外我们也可以指定端口&a…

C定义全局变量

程序工程中往往遇到这样的问题&#xff1a;某个变量是贯穿始终的&#xff0c;主函数以及不同的子函数都要用到这个变量&#xff0c;并且要调用子函数改变变量的值。这时候全局变量就起到一个桥梁作用&#xff0c;在函数外定义&#xff0c;在主函数中调用定义&#xff0c;在子函…

tensorflow(centos 7.0 64)安装

tensorflow安装 系统centos 7.0 64位&#xff1a; python版本&#xff1a;(注意tensorflow目前只支持python2.7版本) 安装pip yum update -y && yum install -y python python-devel epel-release.noarch python-pip 使用pip安装tensorflow pip install https://storag…

午餐前如何安装OpenStack Cloud

图1. QuickStart的内部工作原理 云安装程序 如果我告诉您可以在必须停下来吃午餐之前进行OpenStack Cloud环境设置&#xff0c;该怎么办&#xff1f; 您会感到惊讶吗&#xff1f; 你今天可以做吗&#xff1f; 在大多数情况下&#xff0c;我敢打赌您的答案是不可能的&#…

实现多线程的方式之实现Callable接口

package com.hls.juc;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/** * 创建多线程的方式 : 4种 * 1.继承Thread类 * 2.实现Runable接口 * 3.实现Callable接口 * 4.使用线程池创建线程 * *…

b 树查找时间复杂度_你心里是没点B树吗?

点击上方“零一视界”&#xff0c;选择“星标”公众号资源干货&#xff0c;第一时间送达1 引言数据库的增删改查等操作是开发过程中最为常见也是尤为重要的&#xff0c;尤其是现在大数据的兴起&#xff0c;导致数据存储量急剧增加&#xff0c;提升数据的操作效率就变得尤为关键…

Opencv imshow显示不出来图片

VSOPENCV处理图像时&#xff0c;imshow显示图片一片灰色&#xff0c;刚开始以为图片太大一直加载不出来&#xff0c;但是一直等不到显示出来&#xff0c;最后发现是因为最后忘记写 cvWaitKey(0);//或者waitKey(0);

vue 2个方法先后执行_有效快速制作工资条的2个方法

发工资是每个月员工们最期待的事情&#xff0c;但是对于HR来说却是非常头痛的工作。如何快速制作工资条&#xff1f;相信很多HR朋友们都很想知道&#xff0c;那么今天本文就和大家分享2个制作工资条的高效方法。 第一种&#xff1a;传统方式&#xff08;Excel制作&#xff09;制…

Opencv图像保存到电脑及显示

针对两种类型的图片有两种不同的方法&#xff1a; 1、对于Mat类型图像&#xff0c;用imwrite、imshow Mat img_goodmatch; imwrite("最终匹配结果.bmp", img_goodmatch); //“”里面为路径及图片名&#xff0c;可以改为绝对路径 …

机器学习算法库scikit-learn的安装

scikit-learn 是一个python实现的免费开源的机器学习算法包&#xff0c;从字面意思可知&#xff0c;science 代表科学&#xff0c;kit代表工具箱&#xff0c;直接翻译过来就是用于机器学习的科学计算包。 安装scikit-learn有两种方式&#xff1a; &#xff08;1&#xff09;安装…

从头基于空镜像scratch创建一个新的Docker镜像

我们在使用Dockerfile构建docker镜像时&#xff0c;一种方式是使用官方预先配置好的容器镜像。优点是我们不用从头开始构建&#xff0c;节省了很多工作量&#xff0c;但付出的代价是需要下载很大的镜像包。 比如我机器上docker images返回的这些基于nginx的镜像&#xff0c;每个…

python bool转string_Python:可以返回boolean和string吗?

原始问题我已经创建了一个等待特定字符串出现在串行端口上的函数,并返回所有字符读取,直到找到该字符串,否则返回false.这很方便,但我想知道它是否被认为是不好的做法&#xff1f;澄清&#xff1a;主要目标是等待特定字符串在给定的时间内出现.除IO错误外,可能的结果为True(字符…

在CockroachDB上运行Flowable

什么是CockroachDB&#xff1f; CockroachDB是一个我一直关注很长一段时间的项目。 这是一个开放源代码的Apache 2许可数据库&#xff08; Github链接 &#xff09;&#xff0c; 极大地从Google Spanner白皮书中汲取了灵感 。 它的核心是可水平扩展的键值存储。 但是&#xff0…

C error :Run-Time Check Failure #2 - Stack around the variable 'b' was corrupted.

运行程序遇到这样的错误&#xff1a;Run-Time Check Failure #2 - Stack around the variable b was corrupted. 检查后发现原因在于&#xff1a;数组b越界了&#xff0c;int b[4]里面有4个元素&#xff0c;包含b[0],b[1],b[2],b[3],没有b[4]&#xff0c;赋值的时候把某个数据赋…

如何配置Apache虚拟主机?(基于IP、基于端口、基于域名)

一、Apache虚拟机配置前的准备工作 1、下载yum源2、安装yum包3、安装httpd包4、查看并关闭selinux5、取消中心主机cd /etc/httpd/confvim httpd.conf修改文件中的内容如下&#xff1a;当以上这些工作准备好之后&#xff0c;我们就可以来配置虚拟机了二、我们首先来做一个基于IP…

[bat]删除文件

删除文件 del /f /s /q D:\HRG\NEW_Vn\CSV\*.meta 删除空文件夹 只能先删完文件夹中的文件&#xff0c;再删除空文件夹 rd /s /q D:\HRG\NEW_Vn\CSV\ 脚本 修改 echo off echo --------------------WARNING-------------------- echo [%1] folder will be deleted echo -------…

vvv在线文档导出工具_一款真正实时的在线文档协作编辑工具,多人可同时对一份文件修改...

etherpad-lite一个非常实时的网络协作文字处理器Etherpad是一款真正实时的协作编辑器&#xff0c;可扩展到数千个同步实时用户。与所有其他协作工具不同&#xff0c;Etherpad提供完全保真的数据导出和可移植性&#xff0c;使其完全符合GDPR标准。语言Etherpad是在服务器和客户端…

Mat的初始化以及Mat与数组的相互转化

Mat类型数据的初始化方法可以有以下两种&#xff1a; 1、直接初始化 Mat_<float> T_L (Mat_<float>(3, 1) << -518.97666, 01.20629, 9.14632); 2、利用数组初始化 float A[4][3] { 0 }; Mat A_mat Mat(4, 3, CV_32F, A);//如果是double类型用64 注意&…

smp架构与numa架构_NUMA架构和Java

smp架构与numa架构是时候部署您的应用程序了&#xff0c;期待着采购最适合负载要求的硬件。 如今&#xff0c;具有40核或80核的包装盒非常普遍。 总体概念是更多的内核&#xff0c;更多的处理能力&#xff0c;更多的吞吐量。 但是我看到了一些相反的结果&#xff0c;表明在80核…