美文网首页我爱编程程序员C语言
C语言中const关键词的作用和用途,你真的了解吗?

C语言中const关键词的作用和用途,你真的了解吗?

作者: 往事C语言 | 来源:发表于2018-06-04 13:06 被阅读14次

作用:

const关键字的作用主要有以下几点:

(1)可以定义const常量,具有不可变性。 例如:

const int Max=100; int Array[Max];

(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;

(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。

(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如:

void f(const int i) { i=10;//error! }

(5) 为函数重载提供了一个参考。

class A { ......void f(int i) {......} //一个函数void f(int i) const {......} //上一个函数的重载 ......};

(6) 可以节省空间,避免不必要的内存分配。例如:

#define

PI 3.14159 //常量宏const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ......double

i=Pi; //此时为Pi分配内存,以后不再分配!double I=PI; //编译期间进行宏替换,分配内存double j=Pi;

//没有内存分配double J=PI; //再进行宏替换,又一次分配内存!

const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。

(7) 提高了效率。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

用法:

1、const的普通用法

const int n = 10;

意思很明显,n是一个只读变量,程序不可以直接修改其值。这里还有一个问题需要注意,即如下使用:int a[n];在ANSI C中,这种写法是错误的,因为数组的大小应该是个常量,而n只是一个变量。

2、const用于指针

const int *p;int const *p;int * const p;

在最后的一种情况下,指针是只读的(即p只读),而在另外两种情况下,指针所指向的对象是只读的(即*p只读)。const

是一个左结合的类型修饰符,它与其左侧的类型修饰符一起为一个类型修饰符,所以,int const 限定 *p,不限定p。int *const

限定p,不限定*p。

这里有一个简便的区分方法:沿着*号划一条线,如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。

3、const用于函数的地址传递参数

void foo(const int *p);

这种形式通常用于在数组形式的参数中模拟传值调用。也就是相当于函数调用者声称:"我给你一个指向它的指针,但你不能去修改它。"如果函数编写者遵循了这个约定,那么就相当于模拟了值传递。这也是const最有用之处了:用来限定函数的形参,这样该函数将不会修改实参指针所指的数据。这里注意了,是函数不应该去修改而不是不能修改,也就是说const不能阻止参数的修改(原因见上)。

4、const用于限定函数的返回值

const int foo();const struct mytype foo();

上述写法限定函数的返回值不可被更新,当函数返回内部的类型时,已经是一个数值,当然不可被赋值更新,所以,此时const无意义,最好去掉,以免困惑。当函数返回自定义的类型时,这个类型仍然包含可以被赋值的变量成员,所以,此时有意义。

const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。

C/C++学习路线:(注意收藏)

1、c语言入门 程序设计-算法-运算符-顺序 分支 循环结构。

2、C语言精通 数组-函数字串符-指针-构造类型-预处理-存储管理-文件操作-数据结构。

3、c++入门 面对对象编程-类和对象-运算符重载-派生于继承,异常处理技术-C++语言标准-数据结构-(双向链表-双向队列-树-图)。

4、c++精通-stl标准模板库(容器-迭代器-算法)正则表达式-boost标准模板库-socket网络编程-大型企业项目实战:-员工信息管理系统-推箱子-俄罗斯方块-服务器-播放器-人工智能。

5、windows高级工程师:win32/mfc-windows高级编程-QT框架编程-大型企业级项目实战项目(人脸识别-车牌识别-局域网远程监控-等项目)

6、linux系统应用程序开发-linux内核构架研究-linux顶级网络服务器开发及搭建。

7、大型企业项目实战(linux内核高级虚拟内存驱动设计-linux网络间谍系统软件-linux内核网络数据劫持-linux网络阅读系统开发

喜欢小编的文章的朋友可以关注、收藏、转发、留言,阅读愉快!!

相关文章

  • C语言中const关键词的作用和用途,你真的了解吗?

    作用: const关键字的作用主要有以下几点: (1)可以定义const常量,具有不可变性。 例如: const ...

  • C++ const

    C 和 C++ 中全局 const 变量的作用域相同,都是当前文件,不同的是它们的可见范围:C 语言中 const...

  • C语言中const的作用

    const使变量具有只读属性 const不能定义真正意义上的常量 const将具有全局生命周期的变量存储在制度存储...

  • C/C++ Const 小知识

    Const Const 特点 [描述] 在 C、C++、D 和 JavaScript 编程语言中,const是一个...

  • 一、C++中的const、define

    C 语言中 在C语言中,const是个假语法,const 中的变量可以通过指针修改,例如: C++中 const ...

  • 【记2】const小记

    一、首先介绍C语言中的const功能。 二、开始比较C语言与C++中的const区别。在C语言中,若采用以下代码,...

  • const使用

    通过指针可以修改c语言中const修饰变量的值 const_cast

  • const、static、extern 在头文件中似的情况小结

    const C语言中const修饰的变量存在静态区,c++中存在代码区不占内存。在...

  • C++ const 分析

    1、C语言中的const: const修饰的变量是只读的,本质还是变量 const修饰的局部变量在栈上分配空间 c...

  • const用法总结

    const概述 const是指使用C和C++中常见关键字,在C语言中,主要用于定义变量为常类型以及修饰参数与返回值...

网友评论

    本文标题:C语言中const关键词的作用和用途,你真的了解吗?

    本文链接:https://www.haomeiwen.com/subject/gigesftx.html