C语言中将变量声明为常量的不同方法

    有许多不同的方法使变量成为常量。
    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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值