编译C程序时收到消息warning C4090: '=': different 'const' qualifiers
。
我看过一些信息here,here甚至是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;
}
程序运行良好,我只想了解为什么收到此警告。
答案 0 :(得分:2)
我很惊讶这只是一个警告。在C ++中,这完全是错误的形式。
您的函数采用const int*
,然后将其分配给int*
。
那不是const
正确的。
我猜你是说const int *p
??