const在c和c++中的区别
来源:互联网 发布:淘宝发布产品 编辑:程序博客网 时间:2024/05/21 22:35
error: variable-sized object may not be initialized
const在C,尤其是C++,是个老生常谈的问题,但这里不谈const具体有哪些特性,如何使用,而是说说const在C和C++中的区别。
编译器,C使用gcc,C++使用g++,其它编译器(cl等)请自行验证。在我的印象中,const就是常量(constant)。但这并不是真的。
在C中,const仅仅表示其所修饰对象不可修改。常量和所谓“不可修改”有什么区别呢?C中,const int N = 10; 这样的语句声明了一个整型数据,声明之后你不能再为其赋值,此即为不可修改。但在C中,N却不是常量,而诸如372, 3.72, ‘A’之类才是常量,在C中定义常量通常使用#define。而在C++中,const int N = 10; 就会定义N为常量。
怎么证明呢?你可能知道,定义静态数组,必须使用整型常量指定其大小,那咱们就用这个特性来验证上面描述的观点。
int main(int argc, char **argv)
{
const int N = 10;
int a[N] = { 1, 2, 3 };
return 0;
}
使用g++编译这个程序,没有问题。但若使用gcc,你会得到如下错误信息:
main.c: In function ‘main’:main.c:19:
error: variable-sized object may not be initializedmain.c:19: warning: excess elements in array initializer 但事情并未到此结束,如果你把上面代码中int a[N] = { 1, 2, 3 };的初始化列表去掉,即int a[N]; 然后就也能通过gcc的编译,更有甚者,如果你把const int N = 10;的const去掉:int N = 10; 也能通过gcc的编译!这是gcc所支持的特性,即动态数组。但最好不要这样做,因为gcc会为此生成大量代码。
- const在C和C++中的区别
- const 在c和c++中的区别
- const在C和C++中的区别
- const 在c和c++中的区别
- const在C和C++中的区别
- const在c和c++中的区别
- const在c和c++中的区别
- const 在c和c++中的区别
- const 在c和c++中的区别
- const在C和C++中的区别
- const在C和C++中的区别
- const在C和C++中的一个区别
- const在C语言和C++中的区别
- const在C语言和C++中的区别
- const 在C语言和C++语言中的区别
- C++中的const和C中的区别
- const在c/c++中的区别
- const在C与C++中的区别
- 韩顺平java视频---简单版QQ
- Pull解析器读取XML文件,及保存数据到xml文件中
- vs之程序调试
- 博客学习三
- SQLServer2008设置开启INTERNET远程连接
- const在c和c++中的区别
- opencv 仿射变换 根据眼睛坐标进行人脸对齐 计算变换后对应坐标
- iOS 改变UITextField中光标颜色
- Cricuit Switched Fallback (CSFB) : CDMA2000 1XRTT
- 设置WS_EX_CLIENTEDGE窗口风格
- [JS进阶] JS 之Blob 对象类型
- UVA 12717 Fiasco 水题
- 有关于用JTidy处理HTML转化为标准的XHTML或者XMl出现空的问题
- 关于浏览器被http://www.51jetso.com/劫持