- static 关键字
(1)函数体内 static 变量的作用范围为该函数体,不同于auto 变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)在模块内的 static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的 static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5)static成员函数不允许申明为const,volatile,virtual.因为static成员不属于任何对象。
(6)在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问类的 static 成员变量。
(7)初始化0。对于未初始化的局部变量默认是随机值,未初始化的局部静态变量,未初始化的全局变量和未初始化的全局静态变量默认值为0;这样可以在处理很多问题时定义为static省去对大型数组的初始化过程,编译器默认将其每个字节(后三者放在BSS段)初值置为0x00;
(1)欲阻止一个变量被改变,可以使用 const 关键字。在定义该 const 变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
(2)对指针来说,可以指定指针本身为 const,也可以指定指针所指的数据为 const,或二者同时指定为 const;
(3)在一个函数声明中,const 可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4)对于类的成员函数,若指定其为 const 类型,则表明其是一个常函数,不能修改类的成员变量;
(5)c语言中没有常量折叠,c++支持。如下:
//在c语言中如下语句会报错,但在c++中是合法的,因为在C++中会进行常量折叠:编译器将const 所定义的表达式求值;放入常量表。
const int size = 10;
int a[size];
(6)const 修饰变量时的一个技巧。如下
const int *p;
1
int const *p;
2
int *const p;
3
const int *const p;
4
只需记住 从指针标识符开始 倒过来读p is a _ pointer to _
如1式: p is a pointer to int const;
P是一个指针指向一个int常量,p可修改,指向的变量不可修改。2式也是一样的。
3式:p is a const pointer to int;
P是一个常指针指向一个int 变量,p指向的变量可修改,p不可修改。
4式:p is a const pointer const int;
p和p指向的变量都不可修改。
以上内容引用了 **奔跑吧,行者** 的总结,并加入了自己的一些总结。
推荐阅读
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 【C】题目|【C语言】题集 of ⑥
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 单片机|keil把源代码生成lib的方法
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- 个人日记|K8s中Pod生命周期和重启策略
- 个人理解|【C语言基础之类型转换】
- c语言|【C语言】自定义类型 结构体 枚举 联合