3.static const等等的用法,(能说出越多越好)(重点)
2首先说说const的用法(绝对不能说是常数)
1)在定义的时候必须进行初始化
2)指针可以是const 指针,也可以是指向const对象的指针
3)定义为const的形参,即在函数内部是不能被修改的
4)类的成员函数可以被声明为正常成员函数,不能修改类的成员变量
5)类的成员函数可以返回的是常对象,即被const声明的对象
6)类的成员变量是指成员变量不能在声明时初始化 , 必须在构造函数的列表里进行初始化
(注:千万不要说const是个常数,会被认为是外行人的?。。。∧呐滤蹈鲋欢烈残校?
下面的声明都是什么意思?
const int a; a是一个正常整型数
int const a; a是一个正常整型数
const int *a; a是一个指向常整型数的指针,整型数是不可修改的,但指针可以
int * const a; a为指向整型数的常指针,指针指向的整型数可以修改,但指针是不可修改的
int const * a const; a是一个指向常整型数的常指针,指针指向的整型数是不可修改的,同时指针也是不可修改的
通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码 。合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改 。简而言之,这样可以减少bug的出现 。
Const如何做到只读?
这些在编译期间完成 , 对于内置类型,如int,编译器可能使用常数直接替换掉对此变量的引用 。而对于结构体不一定 。
2再说说static的用法(三个明显的作用一定要答出来)
1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变 。
2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问 。它是一个本地的全局变量 。
3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用 。那就是,这个函数被限制在声明它的模块的本地范围内使用
4)类内的static成员变量属于整个类所拥有 , 不能在类内进行定义,只能在类的作用域内进行定义
5)类内的static成员函数属于整个类所拥有,不能包含this指针,只能调用static成员函数
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
static全局变量与普通的全局变量有什么区别:static全局变量只初始化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
4.extern c 作用
告诉编译器该段代码以C语言进行编译 。
5.指针和引用的区别
1)引用是直接访问,指针是间接访问 。
2)引用是变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间
3)引用绑定内存空间(必须赋初值),是一个变量别名不能更改绑定,可以改变对象的值 。
总的来说:引用既具有指针的效率,又具有变量使用的方便性和直观性
6. 关于静态内存分配和动态内存分配的区别及过程
1) 静态内存分配是在编译时完成的,不占用CPU资源;动态分配内存运行时完成,分配与释放需要占用CPU资源;
2)静态内存分配是在栈上分配的,动态内存是堆上分配的;
推荐阅读
- ui毕业设计开发小程序,ui毕业设计开发小程序是什么
- oracle数据库清理undo,oracle数据库清理归档日志
- 用什么打开pdf好,pdf用什么打开最好
- 废旧路由器作用是什么,废旧路由器作用是什么意思
- vb.net文件的读取 vbnet fileopen
- 新开的诊所如何引流推广,诊所怎么样可以引流客源
- 手机上怎么拷贝到u盘,怎样用手机拷到u盘里
- vb.net斑马打印 c# 斑马条码打印机
- dell怎么切换硬盘顺序,dell电脑怎么改硬盘模式