const:
(1)
可以定义const常量,具有不可变性。
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
(5) 可以节省空间,避免不必要的内存分配。
const在*的左边,则指针指向的变量的值不可变;在*的右边,则指针的指向不可变。简记为“左定值,右定向”。
int a[n];
上述代码中
变量n被修饰为只读变量,可惜再怎么修饰也不是
常量。而ANSI C规定
数组定义时长度必须是“
常量”,“只读
变量”也是不可以的,“常量”不等于“不可变的变量”。enum类型和#define宏,这两个都可以用来定义常量。
const int a; a是一个常整型数
int const a; a是一个常整型数
const int *a; a是一个指向常整型数的指针
int * const a; a是一个指向整型数的常指针
int const * a const; a是一个指向常整型数的常指针
前两个的作用是一样,a是一个常整型数。
第三个意味着a是一个指向常整型数的指针(整型数是不可修改的,但指针可以)
第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。
最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数 是不可修改的,同时指针也是不可修改的)。