【C语言】const关键字
条评论- const意味着常数。
- const定义的变量,他的值不能被改变,在整个作用域中都保持固定
- 同宏定义一样,可以避免意义模糊的数字出现,同样可以很方便的进行参数的调整和修改
- 可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
- const是通过编译器在编译的时候执行检查来确保实现的。
const与指针
指针 | 含义 |
---|---|
const int a; |
a是一个常整型数 |
int const a; |
a是一个常整型数 |
const int *a; |
a是一个指向常整型数的指针(数不可修改,指针可以修改) |
int const *a; |
a是一个指向整型数的常指针(数可修改,指针不可以修改) |
const int *const a; |
a是一个指向常整型数的常指针(数不可修改,指针不可以修改) |
int const *const a; |
a是一个指向常整型数的常指针(数不可修改,指针不可以修改) |
const与函数
const通常用在函数形参当中,如果形参是一个指针,为了防止在函数内部修改指针指向的数据。就可以用const来限制。比如在String的程序中就有很多const修饰形参的情况。
void StringCopy (char* strDestination, const char *strSource)
const还可以表示该函数返回的一个常量,放在函数的返回值的位置,例如
const char * GetString(void);
在类成员函数的声明和定义之中,const放在函数的形参表之后,函数体之前,表示该函数的this指针是一个常量,不能修饰该对象的数据成员,例如
void getId () const;
实例:
下面这段程序的运行结果?
int main ()
{
const int x = 5;
const int *ptr;
ptr = &x;
printf("%d\n",x);
return 0;
}
编译出错
x是常整型数,ptr是指向常整型的指针。ptr = &x;
,即ptr = 10;
,违反了const的规则;const是通过编译器在编译的时候检查来实现的,所以编译报错。
参考: