有许多不同的方法使变量成为常量。
1.使用关键字 const:const关键字指定变量或对象值是常量,并且在编译时不能修改。
// C program to demonstrate const specifier
#include <stdio.h>
int main()
{
const int num = 1;
num = 5; // Modifying the value
return 0;
}
程序将抛出以下错误:
error: assignment of read-only variable ‘num’
2.使用关键字 enum:枚举(enum)是C中用户定义的数据类型。它主要用于为整型常量指定名称,使程序易于阅读和维护。
// In C and C++ internally the default
// type of 'var' is int
enum VARS { var = 42 };
// In C++ 11 (can have any integral type):
enum : type { var = 42; }
// where mytype = int, char, long etc.
// but it can't be float, double or
// user defined data type.
注意:enum的数据类型当然是有限的,正如我们在上面的示例中看到的那样。
3.使用宏:我们也可以用宏来定义常量,但是有一个问题,
#define var 5
由于宏是由预处理程序(预处理程序在源文件中进行文本替换,将所有出现的“ var”替换为文字5)处理的,而不是由编译器处理的。
因此,不建议使用此方法,因为宏不携带类型检查信息,而且容易出错。 实际上,由于“ var”可以像下面示例这样重新定义,因此不是很稳定。
// C program to demonstrate the problems
// in 'Macros'
#include <stdio.h>
#define var 5
int main()
{
printf("%d ", var);
#ifdef var
#undef var
// redefine var as 10
#define var 10
#endif
printf("%d", var);
return 0;
}
输出:
5 10
注意:预处理器和枚举分别仅用作文字常量和整数常量。 因此,它们仅定义常量的符号名称。 因此,如果您需要一个具有特定内存地址的常量变量,请根据需要使用“ const”。
参考文档
[1]Shubham Bansal.Different ways to declare variable as constant in C and C++[EB/OL].https://www.geeksforgeeks.org/different-ways-declare-variable-constant-c-c/,2019-08-21.