Я получаю ошибку, когда передаю массив функции
Массив: int red_eachpix[MAX_PIX] = { 0 }
Функция:
void sum_individualpix(int *pixels, int pixle) {
pixels[(pixle - 1)]++;
}
Ошибка: ошибка C2664: 'void sum_individualpix (int, int)': не может преобразовать аргумент 1 из 'int [255]' в 'int'
Вся программа приведена ниже:
#define MAX_PIX 255
#define WIDTH 25
#define HEIGHT 25
void sum_individualpix(int , int); // I think the error is here
int main()
{
int X, Y, red, counter = 0;
int red_eachpix[MAX_PIX] = { 0 }, Red[WIDTH][HEIGHT] = { 0 };
long sum_red = 0;
in.open("basicval.txt");
if (in)
{
in >> X >> Y >> red; //Data is in form of: X Y B1(red pixel value)
while (!in.eof())
{
counter++;
sum_red += red;
Red[X][Y] = red;
sum_individualpix(red_eachpix, red); //Getting Error here
in >> X >> Y >> red;
}
double avg_red = (double)sum_red / counter;
cout << "Average Value for Red = " << avg_red << endl;
}
in.close();
getchar();
}
void sum_individualpix(int *pixels, int pixle) {
pixels[(pixle - 1)]++;
}
На всякий случай, если кто-то хочет знать, что программа считывает значения пикселей изображения, в то время как само изображение было преобразовано в значения ASCII с помощью программы
Отредактировано: На самом деле Red[WIDTH][HEIGHT]
& int X, Y, red, counter = 0;
не было ошибкой. Я написал это неправильно случайно.
Вы определили два раза одно и то же имя "красный":
int X, Y, red, counter = 0;
int red_eachpix[MAX_PIX] = { 0 }, red[WIDTH][HEIGHT] = { 0 };
у вас есть int X, Y, red, counter = 0;
, переменная int, называемая красной
также red[WIDTH][HEIGHT] = { 0 };
массив int red
void sum_individualpix(int *pixels, int pixle) {
pixels[(pixle - 1)]++; //Shows that first argument type is array
}
Ошибка void sum_individualpix(int, int)
с объявлением функции void sum_individualpix(int, int)
типа данных первого (аргумента) фактически является массивом (int []), а не целочисленным (int), поэтому объявление должно быть изменено на void sum_individualpix(int[], int)
in
определенном, например?