1、定义常量
在 C语言中,常量有两种定义方式,分别是使用 #define
和const
。
1)#define(宏定义)
#define <宏名/标识符> <字符串>
2)const
可以使用 const 前缀声明指定类型的常量:
const type variable = value;
例如,
#includeusing namespace std;int main(){ //常量方式1 const int a = 18; cout << "我的年龄是"<< a << endl; const char nameStr[] = "wonhero"; const int age = 30; printf("我叫%s,%d岁\n",nameStr,age); //常量方式2 修改一次可以改变全局 define本质就是替换#define X 100 //不能有; printf("数量%d个\n", X); cout << "数量" << X*X << "个" << endl;#define PI 3.1415 int R = 100; printf("周长=%f,面积=%f\n", 2 * R*PI, PI*R*R);//f是实数#define name "wonhero" cout << "关键字是%s"<< name; return 0;}
2、const 与 #define 定义常量的区别
1)const 定义常量
不能直接修改,但是可以间接修改可以通过直接修改内存进行修改可以通过指针进行修改
2)#define 定义常量
不能通过指针进行修改,也不能通过内存进行修改,相当于真正意义的常量。
一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译,宏替换是简单的替换。
例如,
#includeusing namespace std;#define VAR 10001int main(){ const int var = 1001; cout << var; *(int *)(&var) = 101;// 转换常量指针为非常量指针,说明 constant 不算真正的常量 cout << endl << var; cout << VAR;// 不能取地址进行修改 return 0;}