将数组作为函数参数传递时出错
Error Passing Arrays as Function Arguments
将数组传递给函数时出错
阵列: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)
相关文章:
- 将私有数据成员作为默认参数传递给该类的公共方法时出错
- 使用模板函数传递模板参数时出错
- 在 c++ 中调用将字符串作为参数传递的函数时出错
- 在运算符中将联合作为参数传递时出错<<
- C++ 在C++中通过引用将枚举作为默认参数传递时出错
- 将非静态函数作为参数传递时出错
- 传递具有依赖嵌套参数类型的模板模板参数时出错
- 将模板参数传递到内部结构时出错
- 将'const'作为参数传递'this'时出错
- C++将模板类型作为参数传递会出错
- 将std::vector作为模板模板参数传递时出错-在GCC中有效,在MSVC中失败
- 将数组作为函数参数传递时出错
- 在C++中将 2d 数组作为函数参数传递时出错
- 使用常量限定符将参数传递到模板函数时出错
- 将常量指针作为参数传递时出错
- 将“const”作为“const double”的“this”参数传递时出错,将丢弃限定符
- 传递std::map作为模板模板参数时出错
- 向函数传递参数时出错
- 将函数指针作为构造函数的参数传递给私有实例变量时出错
- 传递参数时出错,并将其转换为十六进制