C零散知识点汇总之const关键字

简介: C零散知识点汇总之const关键字

C零散知识点汇总之const关键字


定义的const只读变量具有不可变性,但是不可作为数组的维数,也不可用于case之后。

const修饰的只读变量必须在定义的同时进行初始化。

编译器通常不会给普通const只读变量分配存储空间,而是将其保存在符号表中,这使得它成为一个编译期间的值,从而能给你减少不必要的内存分配,提高效率。

#define M 3            // 宏常量
const int N = 5;       // 此时并未将 N 放入内存中
int i = N;             // 此时给 N 分配内存,以后不再分配
int I = M;             // 预编译期间进行宏替换,分配内存。
int j = N;             // 没有进行内存分配
int J = M;             // 再次进行宏替换,又一次分配内存

使用const关键字好处:

1、修饰变量,只读,同时进行初始化,之后此常量再也不改变,能够节省空间,避免没必要要的内存空间分配,提升效率。

2、修饰数组,定义或者说明一个只读数组。

3、修饰指针,能够指定指针自己为const,也能够指定指针所指的数据为const,或两者同时指定为const。

const int *p;            // p可变,p指向的对象不可变。
int const *p;            // p可变,p指向的对象不可变。
int * const p;           // p不可变,p指向的对象可变。
const int * const p;    // 指针p和p指向的对象都不可变。

4、修饰函数的参数,能够防止参数意外改动,增加程序的健壮性。

5、修饰函数的返回值,返回值为const型,不能做为左值。

相关文章
|
1月前
|
C语言
C语言(指针详解)重点笔记:指针易错点,都是精华
C语言(指针详解)重点笔记:指针易错点,都是精华
35 0
|
6月前
|
存储 安全 Java
【C++】引用之带你“消除”C语言版数据结构教材的一些困惑(虽然是C++的内容,但是强烈建议正在学习数据结构的同学点进来看看)
【C++】引用之带你“消除”C语言版数据结构教材的一些困惑(虽然是C++的内容,但是强烈建议正在学习数据结构的同学点进来看看)
48 0
|
10月前
|
编译器 C++
【C++精华铺】6.C++类和对象(下)类与对象补充及编译器优化
构造函数的初始化列表及其行为、static成员(函数,变量)、友元(函数,类)、内部类、匿名对象、对象拷贝时的编译器优化
|
11月前
|
存储 C语言 C++
【C语言初阶】初学必看,深入了解指针的概念!看完让你不在害怕指针(图文并茂)
【C语言初阶】初学必看,深入了解指针的概念!看完让你不在害怕指针(图文并茂)
110 0
|
安全 编译器 网络安全
一些碎碎念以及类和对象零碎知识点补充
一些碎碎念以及类和对象零碎知识点补充
86 0
一些碎碎念以及类和对象零碎知识点补充
|
C++
c++零散知识点
如果在类体外定义inline函数,则必须讲类定义和成员函数定义都放在同一个头文件里面(或写在同一个源程序文件中)否则编译时无法进行置换(将函数代码得拷贝嵌入到函数调用点中)
75 0
|
存储 编译器 C语言
初阶C++——C++第二节——类和对象(大全篇)
万物皆对象。因为只要我们去研究它,它就成为我们的对象。在编程世界,其可以指所有的数据。并且该说法尤其是与类同时出现的频次较高。
61 0
初阶C++——C++第二节——类和对象(大全篇)
|
存储 编译器 C语言
C/C++零散知识点汇总之变量
C/C++零散知识点汇总之变量
|
编译器 C语言
C零散知识点汇总之static关键字
C零散知识点汇总之static关键字
|
前端开发
带你读书之“红宝书”:第五章 基本引用类型①
带你读书之“红宝书”:第五章 基本引用类型①
68 0
带你读书之“红宝书”:第五章 基本引用类型①