话说C语言的const1

作者:小小谷 | 创建时间: 2023-03-24
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰 的对象为常量(immutable)。 我们来分情况看语法上它该如何被使用。...
话说C语言的const1

步骤/方法

函数体内修饰局部变量。

例: void func(){ const int a=0; } 首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量, 我们给它赋予初始值0。 然后再看const. const作为一个类型限定词,和int有相同的地位。 const int a; int const a; 是等价的。于是此处我们一定要清晰的明白,const修饰的对象是谁,是a,和int没 有关系。const 要求他所修饰的对象为常量,不可被改变,不可被赋值,不可作为 左值(l-value)。 这样的写法也是错误的。 const int a; a=0;

这是一个很常见的使用方式: const double pi=3.14; 在程序的后面如果企图对pi再次赋值或者修改就会出错。 然后看一个稍微复杂的例子。 const int* p; 还是先去掉const 修饰符号。 注意,下面两个是等价的。 int* p; int *p;

其实我们想要说的是,*p是int类型。那么显然,p就是指向int的指针。 同理 const int* p; 其实等价于 const int (*p); int const (*p);

即,*p是常量。也就是说,p指向的数据是常量。 于是 p+=8; //合法 *p=3; //非法,p指向的数据是常量。 那么如何声明一个自身是常量指针呢?方法是让const尽可能的靠近p; int* const p; const右面只有p,显然,它修饰的是p,说明p不可被更改。然后把const去掉,可以 看出p是一个指向 int形式变量的指针。 于是 p+=8; //非法 *p=3; //合法

再看一个更复杂的例子,它是上面二者的综合 const int* const p; 说明p自己是常量,且p指向的变量也是常量。 于是 p+=8; //非法 *p=3; //非法 const 还有一个作用就是用于修饰常量静态字符串。

温馨提示

本文仅供参考。
原帖无图,为了美观随便找的图。
点击展开全文

更多推荐