1)C++默认为内部链接;C默认为外部链接
2)在C++中,一般一个const不会创建内存空间,而是将其保存在符号表(待看)。比如:

 const int bufsize = ;
char buf[bufsize];

这里无需为const创建内存空间,进行完类型检查之后,值会折叠到代码中。
也有为const分配内存的时候。如取一个const的地址或者把它定义为extern等。

#include <iostream>
const int i = ;
const int j = i + ;
long address = (long)&j;//i、j本没有被分配存储空间,但因为这里需要j的地址,故迫使编译器给j分配存储空间,但也是不能改变值的内存空间。
char buf[j + ]; int main()
{
const char c = cin.get();//这里因为c的值编译期间并不知道,因此也要为它分配内存
const char c2 = c + 'a';
cout << c2;
}

另外,const用于集合的时候,也会分配内存

 const int i[] = {,,,};
float f[i[]];//编译器在编译期间为i分配了内存(集合,复杂的结构不会放在符号表中),无需知道其值,所以编译期间i[3]并不知道为何值。但定义数组的话要指定它的大小,故这里出现error。
struct S{int i,j;};
const S s[]={{,},{,}};
double d[s[].j];//同样这里也不知道s[1].j的值。出现error.
void main(){} extern const int x = ;//强迫给它分配内存。

C中,一个const总是需要创建存储空间的。其义为:一个不能被改变的普通变量。

 const int bufsize = ;
char buf[bufsize];//会有error。因为bufsize占用某块内存,所以编译器并不知道其值。 const int bufsize;//这个是可以的;作为一个申明。

C++中当定义一个const时,必须赋值给它,除非用extern做了说明。

 extern const int bufsize;//同上的意思。

const关键字在C和C++区别的更多相关文章

  1. C++中的const关键字

    http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...

  2. 陈正冲老师讲c语言之const关键字

    1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...

  3. const关键字详解

    const在函数前与函数后的区别 一   const基础         如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:         int   b   =   500; ...

  4. C++ const关键字用法详解

    1const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目. 事实上这个概念谁都有只是三种声明方式非常相似很容易记混. Bjarne在他的T ...

  5. C/C++中const关键字的用法及其与宏定义的比较

    1.const关键字的性质 简单来说:const关键字修饰的变量具有常属性. 即它所修饰的变量不能被修改. 2.修饰局部变量 ; ; 这两种写法是等价的,都是表示变量的值不能被改变,需要注意的是,用c ...

  6. c++ --> const关键字总结

    const关键字总结 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性.const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变 ...

  7. 【3】学习C++之const关键字的使用

    在C++中,const关键字是控制变量是否可以变化的,是否能够用好const关键字是区别小白和大佬的重要指标(大雾). 1.const与基本数据类型 ; //a是变量,a的值可以在后续操作中进行更改. ...

  8. C/C++中const关键字的用法及其与宏常量的比较

    1.const关键字的性质 简单来说:const关键字修饰的变量具有常属性. 即它所修饰的变量不能被修改. 2.修饰局部变量 ; ; 这两种写法是等价的,都是表示变量的值不能被改变,需要注意的是,用c ...

  9. C++中const关键字的使用方法,烦透了一遍一遍的搜,总结一下,加深印象!!!

    之前一直在学习C/C++,关于const的使用,这里出现一点,那里出现一点.知识用时方恨少,这一段时间正好各种笔试题,其中关于const的用法也是层出不穷,所以疲于在书本上各种翻,这里汇总一下,加深自 ...

随机推荐

  1. 自学Linux命令的四种方法

    自学Linux命令的四种方法 导读 童鞋们刚接触linux时,在学习过程中中会遇到不少问题,学习linux摸不着头脑,那么下面介绍四种linux的学习方法,特别适合新手. 方法一:终端"每日 ...

  2. iOS 关于UIscrollView

    设置 滚动起始位置 [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];

  3. Java基础知识强化104:Serializable接口 与 Parcelable接口

    1. 什么是 序列化 和 反序列化 ?     序列化 :序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间.序 ...

  4. 【Android 界面效果43】Android LayoutInflater的inflate方法中attachToRoot的作用

    我们在ListView的Adapter的getView方法里面经常会调用两个参数的inflate方法, mInflater.inflate(R.layout.adv_viewpager, null); ...

  5. nginx设置SSL反向代理

    Nginx的反向代理通常用来映射内网中提供的Apache.IIS.Lighttpd服务,以实现负载均衡:同时,由于动态服务程序运行在内网,服务器的整体安全性也有所提高,那么怎样用nginx设置SSL的 ...

  6. Linux下命令sort, uniq

    标题:sort, uniq 一.sort命令的使用       1. 作用:sort命令顾名思意,其可以帮助我们进行排序,而且可以依据不同的数据类型来排序.例如数字和文字的排序就不一样,sort可以指 ...

  7. Umbraco(7)-The Navigation Menu And A Parent Page with Infinite Children

    原文链接:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/umbraco7the-navigation-menu-and-a-par ...

  8. [转]Advanced Oracle SQL Developer Features

    本文转自:http://www.oracle.com/technetwork/cn/server-storage/linux/sqldev-adv-otn-092384.html Advanced O ...

  9. 解决Elementary OS和Windows时间不一致

    解决方案一:把Windows从硬件时间修改成修改成UTC时间,管理员身份运行 Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInforma ...

  10. CentOS中ps配合Kill进程的N种方法

    首先,用ps查看进程,方法如下: $ ps -ef  …… smx       1822     1  0 11:38 ?        00:00:49 gnome-terminal smx     ...