Ошибка передачи массивов как аргументов функций

0

Я получаю ошибку, когда передаю массив функции

Массив: 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; не было ошибкой. Я написал это неправильно случайно.

  • 0
    Там нет ошибки с этим кодом. Вставьте все это, включая функцию, которая дает объявление / определение ошибки.
  • 1
    @ Пача Не правда! Где in определенном, например?
Показать ещё 1 комментарий
Теги:
arrays
function

3 ответа

1

Вы определили два раза одно и то же имя "красный":

int X, Y, red, counter = 0;
int red_eachpix[MAX_PIX] = { 0 }, red[WIDTH][HEIGHT] = { 0 };
1

у вас есть int X, Y, red, counter = 0; , переменная int, называемая красной
также red[WIDTH][HEIGHT] = { 0 }; массив int red

0
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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню