C语言的const关键字

const定义的是变量,而define定义的是常量。define定义的宏在编译后就不存在了,它不占用内存,因为它不是变量,系统只会给变量分配内存。但const定义的常变量本质上仍然是一个变量,具有变量的基本属性,有类型、占用存储单元。 可以说,常变量是有名字的不变量,而常量是没有名字的。

int *pi;

*pi被声明一个整型,可以推断出pi是一个普通的指向整型的指针。

int const *pci;

*pci被声明为一个整型常量,可以推断出pci是一个指向整型常量指针。你可以修改指针的值,但不能修改它所指向的值。

int * const pci;

*const pci被声明为整型,可以推断出pci被声明为一个指向整型常量指针。此时指针的值无法修改,但可以修改它所指向的那个整型的值。

int const * const cpci;

* const cpci被声明为一个整型常量,可以推断出cpci是一个指向整型常量整型指针。无论是指针的值还是它所指向的值,都无法修改。

下面两个声明都为50这个值创建了名字常量。

#define MAX_ELEMENTS 50
int const max_elements = 50;

在这种情况下。使用#define比使用const变量好。因为只要允许使用字面值常量的地方都可以使用前者,比如声明数组的长度。const变量只能用于使用变量的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值