带有指针作为参数问题的 C++ 函数

c++ function with pointers as argument problem

本文关键字:问题 C++ 函数 参数 指针      更新时间:2023-10-16

我在 c++ 中使用 fftw 进行傅里叶变换。有标准数据类型fftw_complex,它基本上是双精度[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<<"Testn"<<::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;
}

忘记couts,它们仅用于调试。函数唯一应该做的是,如果指针参数指向的数组为空,则返回 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);

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