栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言中const关键字的作用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言中const关键字的作用

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

1.定义

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

2.const的使用 
int main() {
	int n = 10;//给N初始化
	n = 20;//改变n初始化的值并重新赋值n为20
	printf("%dn", 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:%dn", t, o);
	int* p = &t;
	*p = 50;//指针解引用
	printf("t:%dn", t);
	p = &o;
	*p = 70;//指针解引用
	printf("o:%dn", 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的地址。 

 

4.函数形参中const的作用

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

 

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


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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018391.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号