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型,不能做为左值。

相关文章
|
编译器 C语言
C零散知识点汇总之static关键字
C零散知识点汇总之static关键字
|
存储 编译器 C语言
C/C++零散知识点汇总之变量
C/C++零散知识点汇总之变量
|
C语言
学生时代所学的一些 C 语言知识点回顾(3)——再议指针的声明与使用
学生时代所学的一些 C 语言知识点回顾(3)——再议指针的声明与使用 # include int main(int argc,char *argv[]){ int *p; *p = 203030; printf("%d\n",*p); } 这段代码能正常通过编译,但是不能正常执行。
693 0
|
安全 编译器 网络安全
一些碎碎念以及类和对象零碎知识点补充
一些碎碎念以及类和对象零碎知识点补充
122 0
一些碎碎念以及类和对象零碎知识点补充
|
C++ 编译器 存储
C++中的零散重要知识点
(一):类相关 static 在类中的关键是用在类中的静态变量除了整型,枚举类型(枚举也是以整型存储的)的const类型可以在类中初始化。其他的都不能在类中初始化。
|
编译器 C语言 C++
C/C++零散知识点汇总
C/C++零散知识点汇总
|
C++
c++零散知识点
如果在类体外定义inline函数,则必须讲类定义和成员函数定义都放在同一个头文件里面(或写在同一个源程序文件中)否则编译时无法进行置换(将函数代码得拷贝嵌入到函数调用点中)
140 0
|
编译器 C++
【C++精华铺】6.C++类和对象(下)类与对象补充及编译器优化
构造函数的初始化列表及其行为、static成员(函数,变量)、友元(函数,类)、内部类、匿名对象、对象拷贝时的编译器优化
103 0
|
Java 编译器 C++
C/C++零散知识点汇总之for和while循环对比
C/C++零散知识点汇总之for和while循环对比