免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 11018 | 回复: 38
打印 上一主题 下一主题

const 修饰的变量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-12 14:51 |只看该作者 |倒序浏览
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         const int MAX;
  5.         scanf("%d", &MAX);
  6.         int a[MAX];
  7.         scanf("%d", &MAX);
  8.         printf("%d\n", sizeof(a));
  9.         return 0;
  10. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-06-12 14:59 |只看该作者
const变量不是一般要初始化时赋值的吗? 而且const只是指定变量为只读而已!

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2010-06-12 15:23 |只看该作者
LZ要说明什么?

论坛徽章:
0
4 [报告]
发表于 2010-06-12 16:07 |只看该作者
回复 1# hardie
linux+gcc测试结果
5
20
7
28
第一次输入5,打印20;
第二次输入7,打印28
哪位高人能解释一下?

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
5 [报告]
发表于 2010-06-12 16:25 |只看该作者
你这些的是什么代码
int array[MAX];
这个是C99引入的可变数组,sizeof是动态计算的,所以大小是正确的

论坛徽章:
0
6 [报告]
发表于 2010-06-12 16:43 |只看该作者
忘说了,稍改了一下,加了个打印
  1. [root@dpf usr]# cat tmp.c
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.         const int MAX;
  6.         scanf("%d", &MAX);
  7.         int a[MAX];
  8.         printf("%d\n", sizeof(a));
  9.         scanf("%d", &MAX);
  10.         printf("%d\n", sizeof(a));
  11.         return 0;
  12. }
  13. [root@dpf usr]# cc tmp.c
  14. [root@dpf usr]# ./a.out
  15. 5
  16. 20
  17. 7
  18. 28
复制代码
去掉const两次打印就都是20了

论坛徽章:
0
7 [报告]
发表于 2010-06-12 16:45 |只看该作者
回复 4# tajial


    4*5 = 20
    4*7 = 28

论坛徽章:
0
8 [报告]
发表于 2010-06-12 16:50 |只看该作者
我也不明白,想知道为什么
不加const修饰,两次打印的结果是一样
加了const修改,结果就不一样了

论坛徽章:
0
9 [报告]
发表于 2010-06-12 16:52 |只看该作者
回复  tajial


    4*5 = 20
    4*7 = 28
rain_fish 发表于 2010-06-12 16:45

这个我会算
问题是为什么去掉const就没有这种情况了

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
10 [报告]
发表于 2010-06-12 16:59 |只看该作者
有const的生成的汇编码多几行,为啥这样不清楚
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP