解释memcpy(MatLab引擎)的使用
Explain the use of memcpy (MatLab engine)
我有在 MatLab 中运行模拟的背景,目前正在学习运行模拟C++,同时仍然使用 MatLab 通过 MatLab 引擎进行绘图。下面的代码显示了我编写的一段示例代码,用于生成变量,将其传递给 MatLab 工作区,绘制它,然后将另一个变量传递回C++。
#include <iostream>
#include "engine.h"
//#include "mex.h"
using namespace std;
void main()
{
//Create pointer for matlab engine
Engine *matlab;
//Open matlab engine interface
matlab = engOpen("null");
//Create variable
double timedata[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
mxArray *T = mxCreateDoubleMatrix(1, 10, mxREAL);
memcpy((void *)mxGetPr(T), (void *)timedata, 10 * sizeof(double));
//Put variable into workspace
engPutVariable(matlab, "workspaceT", T);
//Evaluate strings in MatLab
engEvalString(matlab, "D = workspaceT+2;");
engEvalString(matlab, "plot(workspaceT,D);");
//Get variable from MatLab workspace
mxArray *d = engGetVariable(matlab, "D");
double b[10];
for (int i = 0; i < 9; i++)
{
b[i] = (double)mxGetPr(d)[i];
cout << b[i];
}
cout << endl;
system("pause");
//Close matlab engine interface
engClose(matlab);
}
我特别感兴趣的部分是这个...
memcpy((void *)mxGetPr(T), (void *)timedata, 10 * sizeof(double));
我完全不知道这段代码在做什么。我看了一下文档(http://www.cplusplus.com/reference/cstring/memcpy/),它并没有完全启发我。我特别没有得到的部分是使用(void *)。正如我所说,我的背景是 MatLab,所以我不完全是C++方面的专家,所以如果有人能像我五岁一样解释这里发生的事情,将不胜感激!
谢谢
塞布。
这是
memcpy
的原型
void * memcpy ( void * destination, const void * source, size_t num );
memcpy
的前 2 个参数是void*
。 (void*)
是显式(C 样式)强制转换,它将任何指向指针的指针强制转换为 void。
但是,它不是必需的,因为它可以隐式发生:
int *pointer_to_int;
void *pointer_to_void = (void*)pointer_to_int;//explicit cast
pointer_to_void = pointer_to_int; //implicit cast
相关文章:
- 当使用带有VS2019或VSCode的虚幻引擎4.24.2时,我如何修复这些错误的Intellisense错误
- Unity在虚幻引擎4中的"Vector3.Slerp"等效C++?
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- 在虚幻引擎中删除NXOpen对象时崩溃
- vector<vector<double>> to mxArray using memcpy
- 引擎节点:未定义的符号:_ZTV6Config
- Agora.io 虚幻引擎插件构建错误
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 使用 memcpy() 复制到 std::chrono::milliseconds 会给出错误 -Werror=clas
- 无法在 Arch Linux 中启动虚幻引擎 4
- 在虚幻引擎中触发C++ dll的事件
- 从向量到空指针的 memcpy(反之亦然)不起作用
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 在 C/C++ 中加载 OpenSSL 自定义引擎
- 组件上的虚幻引擎可蓝图UFUNCTION会导致构建错误
- 使用Visual Studio在虚幻引擎中创建一个新的类c ++给了我太多的错误
- Memcpy C++替代方案
- Qt:memcpy失败了.如何复制?
- 在什么条件下使用 std::memcpy 在对象之间复制是安全的?
- 解释memcpy(MatLab引擎)的使用