2013-11-20 70 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不真實!例如,在哪裏定義? –

+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 }; int數組

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)