C/C++语言基础_static,const,sizeof
来源:互联网 发布:中国银行淘宝卡 编辑:程序博客网 时间:2024/06/07 08:19
Static关键字有什么作用(列举三条以上)
1.函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值。
2.在模块内的static全局变量可以被模块内的所有函数访问,但不能被模块外的其他函数访问。
3.在模块内的static函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内。
4.在类中的static成员变量属于整个类所有,对类的所有对象只要有一份复制。
5.在类中的static成员变量属于整个类所有,这个函数不接收this指针,因而只能访问类的static成员变量。
范例:
#include<stdio.h>int sum(int a){ int c=0; static int b=3; c+=1; b+=2; return (a+b+c);}void main(){ int i=0; int a=2; for(i=0;i<5;i++) { printf("d%,",sum(a)); }}
分析:这里静态局部变量b的生存周期为整个程序,每次调用函数sum()时,静态局部变量b都保存了前次被调用后留下的值。每次调用sum()函数时,a和c的值都没变,只有b的值每次加2,则第一次输出8,第二次输出10,输出结果依次递增2。
const关键字有什么作用?
1.欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对他进行初始化,因为以后就没有机会再去改变他了。
2.对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或者二者同时为const。
3.在一个函数声明中,const可以修饰形参,表明他是一个输入参数,在函数内部不能改变其值。
4.对于类成员函数,若指定其为const类型,则表明是一个常量函数,不能修改类的成员变量。
5.对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为左值。
请说出const与#define相比有何优点
1.const修饰的只读变量具有特定的类型,而宏没有数据类型。编译器可以对前者进行类型安全检查,而对后者只能进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。
2.有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
3.编译器通常不为普通的const只读变量分配存储空间,而是将它们保存在符号表中,这使得他成为一个编译期间的值,没有了存储与读内存的操作,使得他的效率也很高。
sizeof的使用
int i=0;下面哪个不能运行出结果()?
A.sizeof(int) B.sizeof(i) C.sizeof int D.sizeof i
sizeof表示的是计算对象所占内存空间的大小,大多数人根据他的形式sizeof()认为sizeof是函数,实际上他只是关键字并非函数,D选项运行结果证明了它不是函数。
另外,需要注意的是,sizeof在计算变量所占空间大小的时候,括号是可以省略的(一般人我都不告诉他),而在计算类型(模子)大小时括号则不能省略,故A,B,D都将显示4.
1.1
阅读全文
1 0
- C/C++语言基础_static,const,sizeof
- C语言基础五_static和extern
- C语言基础之sizeof
- C语言32个关键字_static
- C++:const和sizeof
- 浅谈C++const、sizeof
- c语言基础之const
- C语言基础-const用法
- [C]C语言基础巩固专题----const
- C++_static关键字
- C语言深度剖析--读书笔记2_static关键字
- (编程基础)c语言const浅析
- 程序基础C语言常量(const)参数
- C语言中的sizeof
- C语言中的sizeof
- sizeof C 语言
- C语言:sizeof
- C语言--sizeof
- 文章标题
- Python入门笔记三
- IO流
- 算法日志(1)------数据结构讲解
- 初识http之referer字段
- C/C++语言基础_static,const,sizeof
- Tensorflow学习笔记-变量管理
- Freeswitch 命令和Appliation 应用的介绍
- TensorFlow在线预测
- Cura 2.6.2 在 windows 的离线 编译方法带教程视频
- rnn Attention网络的实现
- JavaScript 数据类型使用小结
- 通过TortoiseGit上传项目到GitHub
- Webpack 3.x 通过webpack安装React和Babel