我有这个代码但是没有用,它一直给我以下错误:
[Error] cannot convert 'float' to 'float*' for argument '1' to 'void zeroCrossing(float*, float*, int)'
[Error] cannot convert 'float*' to 'float' for argument '1' to 'bool getSign(float)'
[Error] cannot convert 'float*' to 'float' for argument '1' to 'bool getSign(float)'
[Error] invalid conversion from 'int' to 'float*' [-fpermissive]
#include <iostream>
#include <cstring>
using namespace std;
void zeroCrossing(float *data, float *zerCross, int nx);
bool getSign(float data);
float array[9] = {1,2,3,0,-1,-2,-3,0,1};
float *p = array;
float f1[9];
float *p2 = f1;
int bx= 2 ;
int main() {
zeroCrossing(*p,*p2,bx);
return 0 ;
}
/* zero crossing function */
/* data = input array */
/* zerCross = output zero crossing array */
void zeroCrossing(float *data[], float *zerCross[], int nx)
{
int i;
bool sign1, sign2;
memset(zerCross, 0, nx*sizeof(float));//copies the 0 to the first characters of the string
//pointed to, by argument
for(i=0; i<nx-1; i++) /* loop over data */
{
sign1 = getSign(data[i]);
sign2 = getSign(data[i+1]);
if(sign1!=sign2) /* set zero crossing location */
zerCross[i+1] = 1;
}
}
/* get sign of number */
bool getSign(float data)
{
if(data>0) /* positif data */
return (1);
else /* negatif data */
return (0);
}
答案 0 :(得分:0)
当你进行编码时,你应该在一些代码行之后编译代码,除非你是专业人士。
关于您的代码我可以说两件事
功能声明:void zeroCrossing(float *data, float *zerCross, int nx);
和void zeroCrossing(float *data[], float *zerCross[], int nx)
不一样。
变量名称:应避免使用array
之类的名称,因为它们在标准库中使用。
这是我的解决方案,使您的代码可编辑
#include <iostream>
#include <cstring>
using namespace std;
void zeroCrossing(float *data, float *zerCross, int nx);
bool getSign(float data);
float array_[9] = {1,2,3,0,-1,-2,-3,0,1};
float* p = array_;
float f1[9];
float *p2 = f1;
int bx= 2 ;
/* get sign of number */
bool getSign(float data)
{
if(data>0) /* positif data */
return (1);
else /* negatif data */
return (0);
}
/* zero crossing function */
/* data = input array */
/* zerCross = output zero crossing array */
void zeroCrossing(float *data, float *zerCross, int nx)
{
int i;
bool sign1, sign2;
memset(zerCross, 0, nx*sizeof(float));//copies the 0 to the first characters of the string
//pointed to, by argument
for(i=0; i<nx-1; i++) /* loop over data */
{
sign1 = getSign(data[i]);
sign2 = getSign(data[i+1]);
if(sign1!=sign2) /* set zero crossing location */
zerCross[i+1] = 1;
}
}
int main() {
zeroCrossing(p,p2,bx);
return 0 ;
}
答案 1 :(得分:0)
1 - 您应该最小化全局变量的数量,在您的情况下它是0
2 - *p
指向存储在地址p
中的值,因此在main
函数中,当您调用zeroCrossing
时,您需要传递地址,而不是值。
说实话,我不明白你想要做什么,但至少这段代码不会抛出错误:
#include <iostream>
#include <cstring>
using namespace std;
void zeroCrossing(float *data, float *zerCross, int nx);
bool getSign(float data);
int main()
{
float array[9] = {1,2,3,0,-1,-2,-3,0,1};
float *p = array;
float f1[9];
float *p2 = f1;
int bx = 2 ;
zeroCrossing(p, p2, bx);
return 0 ;
}
/* zero crossing function */
/* data = input array */
/* zerCross = output zero crossing array */
void zeroCrossing(float *data, float *zerCross, int nx)
{
int i;
bool sign1, sign2;
memset(zerCross, 0, nx*sizeof(float));//copies the 0 to the first characters of the string
//pointed to, by argument
for(i=0; i<nx-1; i++) { /* loop over data */
sign1 = getSign(data[i]);
sign2 = getSign(data[i+1]);
if(sign1!=sign2) /* set zero crossing location */
zerCross[i+1] = 1;
}
}
/* get sign of number */
bool getSign(float data)
{
if(data>0) /* positif data */
return (1);
else /* negatif data */
return (0);
}