c语言 - "error: expected ';', ',' or ')' before numeric constant"即将进入我的代码



该程序是关于函数做平均值的。我收到一个错误:

错误:数字常量之前的预期";"、"、"或")

在 avg_array() 函数中,每当我构建它时。帮助将不胜感激,谢谢!

#include <stdio.h>      
#define SIZE 5
// Prototypes
int avg_array (int*, int);          
main()
{
    int values[SIZE];
    int avg;
    int i;
    printf("Enter 5 numbers please. n");
    for(i=0; i<SIZE; i++)
    {   
        scanf("%d", &values[i]);
    }
    avg = avg_array(values, SIZE);
    printf("n The avg of the array is %d n", avg);
    getchar();
    getchar();
} // end main()

/* Implement avg_array() WHERE THE ERROR PERTAINS */
avg_array(int my_array[], int SIZE)
{
    int sum;
    int i;
    int fxn_average;
    for(i=0; i<SIZE; i++)
    {
        sum = sum + my_array[i];
    }
    fxn_average = (sum/SIZE);
    return (fxn_average);
}

您正在使用标识符SIZE作为参数。 这也是由预处理器转换为5的宏。 预处理器应用宏后,它看起来像

avg_array (int my_array[], int 5)

由于5是数字常量而不是标识符,因此会生成错误。 更改变量名称。

看起来您还有一个缺少返回类型的函数签名,该返回类型应与上面声明的原型匹配。 试试这个:

int avg_array (int *my_array, int size)
{
    int sum = 0;
    int i;
    for(i=0; i<size; i++)
    {
       sum = sum + my_array[i];
    }
    return sum/size;
}

变量sum应初始化为 0。 不需要局部变量fxn_average,因为您可以在末尾仅使用 return sum/size;


我将第一个参数的类型从 int[]int数组)更改为int *(指向 int 的指针),以便函数定义与问题中给出的原型匹配。该函数被声明

int avg_array (int*, int);

这些参数没有标识符;只指定了它们的类型。 这是有效的C,但许多风格指南都反对它,因为命名参数有助于读者理解含义或意图。 例如,如果您正在编写编程接口,程序员可能会看到的只是头文件中的函数原型。 必须清楚编写正确的函数调用的参数是什么。 无论如何,添加标识符如下所示:

int avg_array (int *my_array, int size);

这与我上面使用的定义相同。

相关内容

最新更新