C++中const与C中的const使用对比
接下来我们在c++环境中编译看看:
root@txp-virtual-machine:/home/txp/c++# g++ test.cpp
root@txp-virtual-machine:/home/txp/c++# ./a.out
array[0] = 0
array[1] = 0
array[2] = 0
a = 3
哈哈通过了,这也说明了,在c++中一般定义的变量类型,在其前面加了const修饰,它就真的变成了常量了;同时细心的你可能发现,怎么在哪个函数里面有一个宏定义啊;平时大家可能见的比较多的是,宏定义都是写在最前面,这里不要奇怪,因为编译在编译到这里的时候,只是把宏定义换成了"a=3",而且还要注意上面const和宏定义的区别:编译器对 const 常量进行类型检查和作用域检查。于是乎我把上面的那个g()函数里面的注释拿掉,再进行编译:
#include <stdio.h>
void f()
{
#define a 3
const int b = 4;
}
void g()
{
printf("a = %d", a);
printf("b = %d", b);
}
int main()
{
const int A = 1;
const int B = 2;
int array[A + B] = {0};
int i = 0;
for(i=0; i<(A + B); i++)
{
printf("array[%d] = %d", i, array[i]);
}
f();
g();
return 0;
}
编译结果:
root@txp-virtual-machine:/home/txp/c++# g++ test.cpp
test.cpp: In function ‘void g()’:
test.cpp:11:25: error: ‘b’ was not declared in this scope
printf("b = %d", b);
在g()函数里面找不到变量b,没有定义,这证明了上面所说的观点。
四、总结:
1,与 C 语言不通,C++ 中的 const 不是只读变量;
2,C++ 中的 const 是一个真正意义上的常量;
3,C++ 编译器可能会为 const 常量非配空间;
4,C++ 完全兼容 C 语言中 const 常量的语法特性;
图片新闻
最新活动更多
-
直播回顾进入直播>> 智能医疗设备测试的挑战
-
4月26日立即报名 >> 【线上研讨会】TDK模块化电容器、电能质量解决方案
-
4月30日免费下载 >> SPM31智能功率模块助力降低供暖和制冷能耗,打造可持续未来!
-
4月30日限时免费下载>> 高动态范围(eHDR)成像设计指南
-
5月10日立即下载>> 【是德科技】精选《汽车 SerDes 发射机测试》白皮书
-
5月22日立即报名>>> OFweek 2024新周期显示技术趋势研讨会
-
9 芯片封装介绍
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论