我在传递浮点数组时遇到了一些麻烦。我将一些浮点数组放入 ActivationFunc,然后从那里我将这些相同的数组放入 sgnFunction,由于某种原因最终会产生不同的值。
#include <stdio.h>
void sgnFunction(float *input[], float *weight[])
{
printf("VALUES: %.2f %.2f %2.f, WEIGHTS: %.2f, %.2f, %.2f\n", *input[0], *input[1], *input[2], *weight[0], *weight[1], *weight[2]);
}
void ActivationFunc(float *x, float *w, float *n, int *d)
{
printf("VALUES: %.2f %.2f %2.f, WEIGHTS: %.2f, %.2f, %.2f\n", x[0], x[1], x[2], w[0], w[1], w[2]);
sgnFunction(&x, &w);
}
int main()
{
float x1[3] = {1, 0, 1};
float x2[3] = {0, -1, -1};
float x3[3] = {-1, -0.5, -1};
int d[3] = {0, 1, 1};
float w[3] = {1, -1, 0};
float n = 0.1;
ActivationFunc(x1, w, &n, &d[0]);
}
如果我从“sgnFunction(&x, &w);”中删除“&”,我会收到以下编译器错误:
test.c: In function 'ActivationFunc':
test.c:10:9: warning: passing argument 1 of 'sgnFunction' from incompatible pointer type
test.c:2:14: note: expected 'float **' but argument is of type 'float *'
我不明白修复它意味着什么。我知道我可能只是在使用指针搞砸了一些事情。一个很好的解释出了什么问题,我的指针做错了什么,以及如何解决这个问题将不胜感激。