将数组作为函数参数传递时出错

Error Passing Arrays as Function Arguments

本文关键字:参数传递 出错 函数 数组      更新时间:2023-10-16

将数组传递给函数时出错

阵列:int red_eachpix[MAX_PIX] = { 0 }

功能:

void sum_individualpix(int *pixels, int pixle) {
    pixels[(pixle - 1)]++;
}

错误:错误C2664:"void sum_individealpix(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;不是一个错误。我不小心写错了。

您定义了两次相同名称"red":

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

您有int X, Y, red, counter = 0;,一个名为red的int变量
也称为红色的red[WIDTH][HEIGHT] = { 0 }; int数组

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)