C语言之const常量(摘自C和指针)

来源:互联网 发布:js选取元素 编辑:程序博客网 时间:2024/05/16 05:53

        C语言中我们可以使用const和define关键字声明常量,所谓常量就是指值不能修改的量。如下面的例子所示:

int const a;const int a;

        这两条语句都把a声明为一个常量(整数),它的值不能被修改。

        由于常量的值无法被修改,所以不能用任何其他东赋值给它,如此一来,怎样使它在一开始就拥有一个值呢?有两种方法:

法1:在声明时对其进行初始化,如下所示:

int const a = 15;

法2:在函数中声明为const的形参在函数被调用时会得到实参的值。

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

int *pi;

        pi是一个普通的指向整形的指针。而变量

int const *pci;

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

int *const cpi;

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

int const * const cpci;

        最后,在cpci这个例子里,无论是指针本身还是它所指向的值都是常量,不允许修改。


提示:

        当你声明变量时,如果变量的值不会被修改,你应该在声明中使用const关键字。这种做法不仅使你的意图在其他阅读你的程序的人面前得到清晰的展现,而且这个值被意外修改时,编译器能够发现这个问题。


备注:本文摘自《C和指针》中文版p38 - p39。