Функция deviation
вызывает у меня ошибку: "Array subscript is not an integer"
. Если вы поможете мне найти причину ошибки, я буду признателен.«Индекс массива не является целым числом» в программе C
float average(float data[], int n) {
float total = 0;
float *p = data;
while (p < (data + n)) {
total = total + *p;
p++;
}
return total/n;
}
float deviation(float data[], int n) {
float data_average = average(data, n);
float total;
float *p = data;
while (p < (data + n)) {
total += (data[p] - data_average) * (data[p + 1] - data_average);
}
return total/2;
}
Сообщение об ошибке представляется очевидным достаточно. Индекс массива должен быть целым числом. В 'datos [p]', 'p' есть указатель, а не целое число. Вы не можете этого сделать. (Ну, вы можете делать глупые вещи, такие как '5 [array]', но вы этого не делаете, 'datos' также является указателем.) –
@KeithThompson, я никогда не видел синтаксис 5 [array]. Я попробовал это, и это похоже на массив [5], но где/зачем использовать что-то подобное? Благодарю. –
@CharlieBurns; 'array [5]' эквивалентен '* (array + 5)' и тот же для '5 [array', который равен' * (5 + array) '. Вот почему 'array [5] = 5 [array]'. * где/зачем использовать что-то подобное? *: Я думаю, что он используется только для ** obfuscation ** :) – haccks