我用 const 修饰数组为什么要警告我呢?
这里是简单的对数组求和,执行结果也没错,就是会出个警告。const修饰数组,我也没改变数组元素的值啊。
---------------------------------------------------------------------------------------我是分割线
通过2楼的回复,const修饰过的变量可以通过指针来修改。比如
const int m = 5;
int *q = &m;
*q = 3;
printf("%d", m);
以上代码会输出6。
那这样const修饰符不是失去了原来常量的意义了吗?你要修改的话,用指针绕个弯照样能修改啊。那么const为什么不设置m这个地址的内存为只读呢,那样不就连指针都不能改了吗?
----------------------------------------------------------------------------------------------------
//上代码
程序代码:#include <stdio.h>
#include <stdlib.h>
#define N 10
int sum_array(const int a[], int n);
int main(){
int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum;
sum = sum_array(a, N);
printf("%d", sum);
return 0;
}
int sum_array(const int a[], int n){
int sum;
int *p;
sum = 0;
for(p = a; p < a + n; p++) //这里警告,warning: assignment discards 'const' qualifier from pointer target type [enabled by default]|
sum += *p; //每个单词我都认识,合一起就不知道是什么意思了
return sum;
}[ 本帖最后由 muyoucumian 于 2014-9-25 20:53 编辑 ]




