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

时间:2019-04-07 20:07:19

标签: c++ arrays pointers

我正在使用fftw在c ++中进行傅立叶变换。有标准数据类型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;
}

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

1 个答案:

答案 0 :(得分:3)

问题似乎是这个

CREATE PROCEDURE `ValidarLogin` (@Email VARCHAR(45), @Senha VARCHAR(255))
BEGIN
AS
    SELECT ID, NOME, DATA_NASCIMENTO 
    FROM usuario 
    WHERE EMAIL = @Email AND SENHA = @Senha;
END

根据您的描述,哪个应该是这个

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);

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