C语言中const关键字的作用

        const是一个C语言(ANSIC)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。

1.定义

        const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的,不能进行二次修改,也可以理解为一锤定音。

2.const的使用 

int main() {
	int n = 10;//给N初始化
	n = 20;//改变n初始化的值并重新赋值n为20
	printf("%d\n", n);//20

         如上图代码,一般情况下,变量的创建和使用都是可以进行赋值与修改的。

        const修饰局部变量:

//但加上const
	const int a = 10;
	int const b = 20;
	a = 50;//err
	b = 100;//err,同理

        a变量和b变量都被const修饰了,不能再修改,初始化的值就是它们最终的值.

        总结:const是用来固定变量的值的作用,相当于给变量上锁。

        const修饰全局变量 :

        全局变量是作用于整个程序的,且全局变量的生命周期为程序运行的整个过程,所以我们应该尽量避免使用全局变量,一旦某个函数改变了全局变量的值,会影响到其他引用这个变量的函数,所以全局变量虽然能被广泛使用,但这是优点也是其缺点,它的安全性就很低!

        如果一定要用全局变量,应该尽量的使用const进行修饰,防止不经意写下的代码代码对其修改,使用 const 修饰过的局部变量就有了静态特性,它的生存周期也是程序运行的整个过程,虽然有了静态特性,但并不是说它变成了静态变量。

3.const对于指针的用法

        一般情况下,指针的使用方法就是--关联某变量的地址,间接修改其变量值。 

    int main(){
    int t = 100;
	int o = 10;
	printf("t:%d o:%d\n", t, o);
	int* p = &t;
	*p = 50;//指针解引用
	printf("t:%d\n", t);
	p = &o;
	*p = 70;//指针解引用
	printf("o:%d\n", o);
    return 0;
    }

        当const的位置处在数据类型*之前时:常量指针

//const作用2:作用于指针
	int aa = 10;
	int bb = 100;

	//情况1:const放在指针左边
	const int* ptr = &aa;
	*ptr = 50;//err报错
	ptr = &bb;

        指针不能对变量aa执行解引用操作,但指针可以换一个变量关联其地址。 

        当const的位置处在数据类型*之后时:指针常量

//情况2:const放在指针右边
	int* const str = &aa;
	*str = 50;
	str = &bb;//err报错

        指针可以对变量aa进行解引用,但指针不能关联其他变量(bb)的地址。 

        当const的位置在数据类型*的两边时: 指向常量的常指针

//情况3:const放在指针两边
	const int* const ppa = &aa;
	*ppa = 250;//err报错
	ppa = &bb; //err报错

        指针既不能对变量aa解引用,又不能关联变量bb的地址。 

总结:

口诀:左定值,右定向。

即 const在*的左边不能改变字符串常量的值;

const在*的右边不能改变指针的指向;

 


4.函数形参中const的作用

        下面是strcpy函数的形式参数,strcpy是一个字符串拷贝函数,它的作用就是将一个字符串的内容(source),拷贝到另一个字符串中(destination)。 

C语言中const关键字的作用_第1张图片

        那么源头字符串的内容必须是固定的,给 source 加上 const 修饰后,如果函数体内的语句试图改动 source 的内容,编译器将报错!!!

 

                                                好了以上就是const的作用讲解,觉得有用的话,给作者点个赞吧!

你可能感兴趣的:(C语言知识点,c++)