C与指针 二 常量

       ANSIC允许你声明常量,常量的样子和变量完全一样,只是它们的值不能修改。你可以使用如把const关键字来声明常量,如下面例子所示:
int const a;
const int a;
       这两条语句都把a声明为一个整数,它的值不能被修改。你可以选择自己觉得容易理解的一种,并一直坚持使用同一种形式。
       当然,由于a的值无法被修改,所以你无法把任何东西赋值给它。如此一来,你怎样才能让它 在一开始拥有一个值呢?有两种方法:首先,你可以在声明时对它进行初始化,如下所示:
int const a = 15;
        其次,在函数中声明为〇0郎1的形参在函数被调用时会得到实参的值。

        当涉及指针变量时,情况就变得更加有趣,因为有两样东西都有可能成为常量——指针变量和 它所指向的实体。下面是几个声明的例子:

int *pi;

扣是一个普通的指向整型的指针。而变量

int const *pci;

则是一个指向整型常量的指针。你可以修改指针的值,但你不能修改它所指向的值。相比之下:

int * const cpi;

则声明卩(^为一个指向整型的常量指针。此时指针是常量,它的值无法修改,但你可以修改它所指

向的整型的值。

int const * const cpci;

        最后,在cpci这个例子里,无论是指针本身还是它所指向的值都是常量,不允许修改。当你声明变量时,如果变量的值不会被修改,你应当在声明中使用const关键字。这种做法不仅使你的意图在其他阅读你的程序的人面前得到更清晰的展现,而且当这个值被意外修改时,编译器能够发现这个问题。

        #define批指令是另一种创建名字常量的机制1。例如,下面这两个声明都为50这个值创建了名字常量。

#define MAX_ELEMENTS 50

int const max_e1eemnts - 50;

       在这种情况下,使用#define比使用const变量更好。因为只要允许使用字面值常量的地方都可以使用前者,比如声明数组的长度。如!^变量只能用于允许使用变量的地方。
       名字常量非常有用,因为它们可以给数值起符号名,否则它们就只能写成字面值的形式。用名 字常量定义数组的长度或限制循环的计数器能够提高程序的可维护性——如果一个值必须修改,只 需要修改声明就可以了。修改一个声明比搜索整个程序修改字面值常量的所有实例要容易得多,特 别是当相同的字面值用于两个或更多不同目的的时候。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值