gpt4 book ai didi

c++ - C++代码中的C

转载 作者:行者123 更新时间:2023-11-28 08:05:51 25 4
gpt4 key购买 nike

我编写了一个 C++ 应用程序,在其中,我需要调用一个用 C 编写的数学函数。原型(prototype)如下所示:

void Jacobi_Cyclic_Method(double *eigenvalues, double *eigenvectors, double *A, int n);

我的问题是我似乎无法传递函数 double *(例如,特征向量和 A 都是多维数组。传递这些东西的 C++ 方法似乎是

double [][size]

我读过有关 extern C 的内容,但我认为它不适用于此处,因为我不是与对象交互而是与源本身交互。我怎样才能将 C 函数发送到我这样定义的多维数组:

double [100][100] A;
double [100][100] eigenvectors;
double [100] eigenvalues;

尝试编译我得到:

error: no matching function for call to ‘MathEngine::Jacobi_Cyclic_Method(double 
[100], double [100][100], double [100][100], int)’
mathEngine.h:9: note: candidates are: static void
MathEngine::Jacobi_Cyclic_Method(double*, double*, double*, int)

最佳答案

问题可能是您的 Jacobi_Cyclic_Method 函数要求矩阵采用列或行主要格式,其中每一列/行都连续存储在一个一维数组中。例如。对于大小为 m x n 的行主矩阵,任何给定行中的元素都连续存储,并且行 i 和列 j 中的项目将是在位置 i*n+j(对于从零开始的索引 ij)。如果矩阵是列优先的,它将位于 i+j*m 位置。

在 C/C++ 中使用多维数组通常不是你想要的,因为像这样

double A[100][100];

不是二维数组,而是长度为 100 的单个数组,其中包含指向长度为 100 的数组的指针。因此,A 中的行不是连续存储的。

关于c++ - C++代码中的C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10308988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com