• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

const在c/c++中的区别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5  const int a = 1;
 6  const int b = 2;
 7  int array[ a + b ] = {0};
 8  for (int i = 0; i < sizeof array / sizeof *array; i++)
 9  {
10         cout << array[i] << endl;
11  }
12 }
13 在可以通过编译,并且正常运行.但稍加修改后,放在C编译器中,便会出现错误:
14 #include <stdio.h>
15 int main()
16 {
17  int i;
18  const int a = 1;
19  const int b = 2;
20  int array[ a + b ] = {0};
21  for (i = 0; i < sizeof array / sizeof *array; i++)
22  {
23         printf("%d",array[i]);
24  }
25 }

1:在c中,const不是常量,他只能说是一个不能改变的变量(注意是变量),而且数组的下标必须是常量,不能是变量。c编译器不能把const看成看成一个编译期间的常量,因为他在内存中有分配,c编译器不知道他在编译期间的值。

 

2:在c中,const int a;是可以的,因为这只是声明一个变量,告诉编译器,我这里是声明,在别的地方有内存分配,

3:c++中const默认是内部链接,c默认是外部链接,为了起到和c语言一样的效果,c++需要将const修饰为extern,因为extern优先级高于const,所以变量会被变为extern外部链接,起到和c语言一样的效果

4:在c++中是否为const分配内存空间要看具体情况,如果被声明为extern或者取const变量地址,就需要为const变量分配空间

5:当你在自己的文件中使用const的时候,c++不会为你的const常量分配空间,因为这是一种优化措施,没有必要浪费空间去存储一个常量,此时const int a=5 就相当于#define a 5,当你在其他文件使用的时候,就需要分配内存了,同样在程序内部引用的时候,也需要分配内存,因为这两者都是采用寻址的技术去使用的,不分配内存就没有地址

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C语言参考程序—无符号一位整数的四则运算发布时间:2022-07-13
下一篇:
C++入门经典-例4.2-调用默认参数的函数发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap