通常在C语言中我们会遇到许多 const
修饰的变量,我们有时候会分不清它们,不知道什么时候该用它们,常常会出现误用,不如把它们的用法总结下来,防止以后出错吧!
const关键字
-
:const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以 提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。定义
常量指针
-
:常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。定义
-
:格式
int num = 10; const int *ptr1 = # int const *ptr2 = # //可以赋值,因为指针本身是变量 ptr1 = ptr2; //错误,不可以解引用后当左值,因为const修饰(int *)故指向的int型变量为常量不可修改 *ptr2 = *ptr1;
- 以上
写在const
之前和写在int
与int
之间的方式都正确,但习惯上常用第一种,表示更加明晰。*
- 指针本身的指向可以改变,但是指向的内容不可修改,只读。
- 以上
-
:通常用于参数传递过程中,如果被传入的参数的值在函数执行期间不希望被修改可以使用常见用法
修饰已达到安全的目的。const
指针常量
-
:指针常量的本质是一个常量,并且使用指针来修饰它,那么说明这个常量的值应该是一个指针。定义
-
:格式
int num = 10; int* const ptr = # //可以赋值,指针常量指向的值并不一定是常量 *ptr = 11; //不可以赋值,指针常量本身的指向不可改变,其值为常量 *ptr = #
-
:一般指针常量用于指向不会发生变化的指针,但是用法并不常见。常见用法
指向常量的常指针
- 相当于常量指针和指针常量的结合,格式
,相当与有一个指向不可修改的指针指向了一个不可修改的常量,在实际coding中很少使用。const int * const ptr = &num
总结 :const 修饰谁,谁就不变
【参考】:百度百科-const