2013-11-20 2 views
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

Ошибка с кодом отсутствует. Вставьте все это, включая функцию, которая дает объявление/определение ошибки. – Pacha

+1

@Pacha Не правда! Где, например, 'in'? –

+0

@ g-makulik О, не видел этого. Ты прав – Pacha

ответ

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 }; целочисленного массив называется красным

0
void sum_individualpix(int *pixels, int pixle) { 
    pixels[(pixle - 1)]++; //Shows that first argument type is array 
} 

Ошибка с объявление функции void sum_individualpix(int , int) первый (аргумент) спецификатор типа данных фактически представляет собой массив (int []) не целое число (int), поэтому декларация должна быть изменена до void sum_individualpix(int[], int)

Смежные вопросы