| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5991 人关注过本帖
标题:我用 const 修饰数组为什么要警告我呢?
取消只看楼主 加入收藏
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
我用 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 编辑 ]
搜索更多相关主题的帖子: 分割线 元素 
2014-09-25 20:12
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
收藏
得分:0 
回复 3 楼 dcl2014
可能是吧,我用的是codeblocks,编译器是什么我自己也不知道。
2014-09-25 20:41
快速回复:我用 const 修饰数组为什么要警告我呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027308 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved