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. io cache

    http://blog.163.com/digoal@126/blog/static/163877040201571511020418 http://dirlt.com/

  2. [原创]SQL SERVER 2008R2安装

    配置系统环境说明 操作系统:Windows 7 操作系统版本:旗舰版 SP1 操作系统位数:x64 注:其它系统配置也基本相似,只是可能菜单的名字或者所处位置不一样,具体的配置如有不同,请自行搜索 安 ...

  3. Python--动态类型

    函数的参数传递,本质上传递的是引用.比如说: def f(x): x = 100 print x a = 1 f(a) print a 输出结果为: 100 1 参数x是一个新的引用,指向a所指的对象 ...

  4. VC6.0常见编译错误提示

    原文:http://c.biancheng.net/cpp/html/746.html 1) error C2001: newline in constant 编号:C2001 直译:在常量中出现了换 ...

  5. 基于EasyUI实现windows桌面

    之前为大家介绍了 基于jquery tool实现的windows桌面效果,今天给大家带来一款基于EasyUI实现windows桌面.这款桌面适用浏览器:360.FireFox.Chrome.Safar ...

  6. reactor官方文档译文(1)Reactor简介

    原文地址:http://projectreactor.io/docs/reference/ Reactor简介 Reactor是一个基础库,用在构建实时数据流应用.要求有容错和低延迟至毫秒.纳秒.皮秒 ...

  7. arm linux kernel 从入口到start_kernel 的代码分析

    参考资料: <ARM体系结构与编程> <嵌入式Linux应用开发完全手册> Linux_Memory_Address_Mapping http://www.chinaunix. ...

  8. Java再学习——线程之创建

    Java创建线程有两种方法,一种是继承Thread,另一种实现Runnable或Callable接口. 一,继承Thread public class APP { public static void ...

  9. iOS 10 推送必看(高阶1)

    来源:徐不同 链接:http://www.jianshu.com/p/3d602a60ca4f iOS10 推送必看(基础篇) 虽然这篇文章比较长,也不好理解,但是还是建议大家收藏,以后用到的时候,可 ...

  10. java对象创建过程

    1.jvm找到class文件路径. 2.jvm载入class文件,静态初始化,创建一个class对象. 3.为即将创建的对象分配内存空间. 4.对分配的空间进行清零,例如:int清除为0,boolea ...