У меня возникли проблемы с работой с массивами поплавков. Я бросаю несколько массивов поплавков в ActivationFunc, а затем оттуда бросаю те же массивы в sgnFunction, которые почему-то заканчиваются тем, что имеют разные значения.C, ошибка компилятора и указатели
#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 (& х, & 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 *'
Что я не понимаю, что это значит Исправить это. Я знаю, что я, вероятно, просто прикручиваю что-то с помощью указателей. Хорошее объяснение того, что не так, что я делаю неправильно с моими указателями, и как исправить это, будем очень благодарны.
Ahhh ... У меня было неправильное представление о том, что мне пришлось передать его в синтаксисе C# или Java. Указатели - это просто указатели - я должен помнить об этом. Спасибо! – Shaku
Добро пожаловать. – Gangadhar