CONST在c/c++中 | 异同 |
---|---|
C | (待补充,暂认为相同) |
C++ | 1.修饰普通变量,并以常量初始化时,变量会存放在符号常量表里(属于代码段,不可取地址)2.如果对其取地址,会再为它开辟空间3.以变量初始化则不会放在符号常量表 |
#include <stdio.h>
#include<stdlib.h>
int main(int argc, char* argv[])
{
const int a = 10;
printf("a=%d\n",a);
printf("a的地址=%p\n",&a);
//虽然为a开辟了空间,但还是不可以修改
//a = 20;
//除非采用隐式转换(在c++中采用强转)
int* p = &a;
*p = 20;
printf("%d\n",a);
return 0;
}
补充:
尽量用const替换define?
1.const有类型,可进行编译器类型安全检查。#defifine无类型,不可进行类型检查.
2.const有作用域,而#define不重视作用域,默认定义处到文件结尾.如果定义在指定作用域下有效的常量,那么#define就不能用。