gpt4 book ai didi

c - 从 c 函数返回一个二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:19:13 25 4
gpt4 key购买 nike

我是一名 python 程序员,正在编写一些 c(包装在 ctypes 中)来加速一些紧密的循环。我在使用二维数组 (*double)[2] 的函数时遇到问题,对它执行一些操作并返回它。函数如下所示:

double *process(int n, double (*results)[2], ...) {
// Do some things to results
return results;
}

这里,n 是第一级结果中的元素数。这不会编译,显然我是从不兼容的指针类型返回的。让它 return *results 允许它编译和运行(所有包含的逻辑都很好),但在返回时出现段错误。使函数成为 double ** 并返回任意数量的 * 不允许我编译。

显然我在这里是个白痴,这并不奇怪,因为我并不真正理解 C 指针。我需要做什么才能完成这项工作?我有另一个返回 double * 的函数工作正常,所以它显然与二维数组有关。

最佳答案

如果您只想获得新的结果,您甚至不需要返回任何东西。数组通过地址而不是值传递。

void process(int n, double results[][2], ...) {
// Do some things to results,
results[n][0] = 1.0l;
// And no need to return.
}
int main(){
double array[2][2] = { .0 };
printf( "Before process: %lf", array[1][0] );
process( 1, array );
printf( "After process: %lf", array[1][0] );
}

它应该输出:

Before process: 0.0000000000
After process: 1.0000000000

关于c - 从 c 函数返回一个二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22538517/

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