gpt4 book ai didi

以指针为参数的c++函数问题

转载 作者:行者123 更新时间:2023-11-30 02:15:58 26 4
gpt4 key购买 nike

我在 C++ 中使用 fftw 进行傅里叶变换。有标准数据类型 fftw_complex,它基本上是一个 double[2]。我想制作一个 fftw_complex 数组。我用

typedef fftw_complex fftw_complex_16[65536];

我将数组中的所有内容都设置为零。然后我有另一个函数应该检查 fftw_complex_16 是否为空。

bool is_empty_fftw_complex_16(fftw_complex_16 *thecomplex){
std::cout<<"Test\n"<<::vowels["a:"][0][0]<<std::endl;

for (unsigned long i=0; i<65536; i++){
if(thecomplex[i][0] != 0 || thecomplex[i][1] != 0){
std::cout<<"Huch!"<<i<<std::endl;
std::cout<<thecomplex[i][0]<<" -- "<<thecomplex[i][1]<<std::endl;
std::cout<<*thecomplex[i][0]<<" -- "<<*thecomplex[i][1]<<std::endl;

return 1;
}
}
return 0;
}

忘掉 cout,它们仅用于调试。如果指针参数指向的数组为空,函数唯一应该做的就是返回 true,否则返回 false。这是行不通的。该函数表示数组不为空!请帮忙,我做错了什么?

最佳答案

问题好像是这个

bool is_empty_fftw_complex_16(fftw_complex_16 *thecomplex){

根据你的描述应该是这个

bool is_empty_fftw_complex_16(fftw_complex *thecomplex){

但很难完全确定,因为您没有发布设置此数组和调用此函数的代码,不幸的是,这是一个很重要的事情,您可能会错过。

这样才是调用函数的正确方式

fftw_complex_16 array;
...
is_empty_fftw_complex_16(array);

我猜你将上面的不正确声明与这个不正确的调用结合起来了。

fftw_complex_16 array;
...
is_empty_fftw_complex_16(&array);

这会编译但不会执行您想要的操作。

关于以指针为参数的c++函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55563205/

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