我的C程序无法理解“警告C4090:'=':不同的'const'限定词”

时间:2019-03-31 23:01:17

标签: c visual-c++

编译C程序时收到消息warning C4090: '=': different 'const' qualifiers

我看过一些信息herehere甚至是here。但是我仍然不明白它们与我的问题有什么关系。对于编译,我使用Visual C ++ 2015 x64本机生成工具命令提示符。 我知道这是因为在函数声明中使用了const。但是数组没有改变。那怎么了?

这是我的代码:

#include <stdio.h>

int sum_array(const int a[], int n)
{
    int *p, sum;

    sum = 0;
    for (p = a; p < a + n; p++)
        sum += *p;

    return sum;
}

int main(void)
{
    int a[5] = {1, 2, 3, 4, 5};
    printf("%d", sum_array(a, 5));
    return 0;
}

程序运行良好,我只想了解为什么收到此警告。

1 个答案:

答案 0 :(得分:2)

我很惊讶这只是一个警告。在C ++中,这完全是错误的形式。

您的函数采用const int*,然后将其分配给int*

那不是const正确的。

我猜你是说const int *p ??