C++琐碎知识(不断更新)
2013-03-30 22:53
302 查看
平时学习中,总是会遇到一些自己不懂的小知识,在这里记下来:
1、c=num1+++num2;
到底是c=(num1++)+num2;还是c=num1+(++num2);这要根据编译器来决定,不同的编译器可能有不同的结果。
2、逗号运算符
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
3、程序实体的生存期和作用域
每个程序实体在程序执行中都有从创建到被撤消的一段时间,这段时间就称为该程序实体的生存期。在生存期内程序实体的标识符与它的存储区相关联。因此,程序实体的生存期由系统为其分配的内存方式所决定。C++为程序实体提供了四种内存分配方式:静态分配(编译器预分配)、栈分配(自动分配)、堆分配(动态分配)、只读分配。
(1) 静态分配
系统可以为每个程序开辟一个固定的静态数据区。存于这区域中的程序实体在编译时即被预分配存储空间,并且在程序开始执行时就被创建,一直到程序结束才被撤消,故称为永久存储。静态分配的特点是与程序共存亡,具有静态生存期。这种分配适合于那些在程序中用得不多,但要为多个函数共用的程序实体。
(2) 栈分配
栈是系统为程序开辟的活动存储区,它是程序使用最频繁的存储区。一个实体,一旦在一个函数内部或一个块内部被声明,系统便在栈中创建它们;该块或函数执行结束,遂将其弹出撤消。这种程序实体具有局部生存期,即它与所在的块共存亡。这种分配适合于那些在程序中使用频繁的程序实体,随建随撤,节省空间。
(3) 动态分配
动态分配将产生一种完全由程序员控制生存的程序实体。在C++中,程序员可以利用专门的运算符new和delete来创建和撤消程序实体。
(4) 只读分配
即用const声明的程序实体,可以认为是被创建在程序的只读存储区中。
作用域实际上就是程序实体的作用范围,而在此范围之外,该程序实体是不可见的。C++的这种特性使得在同一个程序中使用两个名字相同的程序实体成为可能,只要这两个程序实体的作用域不同就行。
4、继承和派生有一个基本的原则,就是基类对象能够使用的地方,也能用同样的方法使用派生类的对象。有时候到底是使用继承还是组合是要好好考虑的。
1、c=num1+++num2;
到底是c=(num1++)+num2;还是c=num1+(++num2);这要根据编译器来决定,不同的编译器可能有不同的结果。
2、逗号运算符
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
3、程序实体的生存期和作用域
每个程序实体在程序执行中都有从创建到被撤消的一段时间,这段时间就称为该程序实体的生存期。在生存期内程序实体的标识符与它的存储区相关联。因此,程序实体的生存期由系统为其分配的内存方式所决定。C++为程序实体提供了四种内存分配方式:静态分配(编译器预分配)、栈分配(自动分配)、堆分配(动态分配)、只读分配。
(1) 静态分配
系统可以为每个程序开辟一个固定的静态数据区。存于这区域中的程序实体在编译时即被预分配存储空间,并且在程序开始执行时就被创建,一直到程序结束才被撤消,故称为永久存储。静态分配的特点是与程序共存亡,具有静态生存期。这种分配适合于那些在程序中用得不多,但要为多个函数共用的程序实体。
(2) 栈分配
栈是系统为程序开辟的活动存储区,它是程序使用最频繁的存储区。一个实体,一旦在一个函数内部或一个块内部被声明,系统便在栈中创建它们;该块或函数执行结束,遂将其弹出撤消。这种程序实体具有局部生存期,即它与所在的块共存亡。这种分配适合于那些在程序中使用频繁的程序实体,随建随撤,节省空间。
(3) 动态分配
动态分配将产生一种完全由程序员控制生存的程序实体。在C++中,程序员可以利用专门的运算符new和delete来创建和撤消程序实体。
(4) 只读分配
即用const声明的程序实体,可以认为是被创建在程序的只读存储区中。
作用域实际上就是程序实体的作用范围,而在此范围之外,该程序实体是不可见的。C++的这种特性使得在同一个程序中使用两个名字相同的程序实体成为可能,只要这两个程序实体的作用域不同就行。
4、继承和派生有一个基本的原则,就是基类对象能够使用的地方,也能用同样的方法使用派生类的对象。有时候到底是使用继承还是组合是要好好考虑的。
相关文章推荐
- 关于C++的基础易错知识(源于各种笔试题,自己要记得不断更新)
- C/C++基础知识收集(不断更新)
- C/C++ 基础知识学习笔记 (不断更新中)
- 知识积累——不断的更新琐碎知识
- 积累一些不太常用的C/C++语言知识(不断更新)
- c++开源机器学习库及机器学习知识框架(更新中)
- 个人知识图谱的建立步骤-算法工程师(不断更新)
- LINUX需要掌握的基础知识(不断更新)
- Java Web知识复习【不断更正,不断更新】
- C++ 琐碎知识总结 - 1
- 数据结构与算法有用的知识链接-----不断更新
- java零碎知识总结(不断更新中)
- c/c++笔试题、面试题(一)(不断更新中)
- [linux] linux知识积累(不断更新中…)
- c++新标准(新的c++标准已经被g++执行,注意更新自己的知识啊!)
- 数据挖掘相关的机器学习知识汇总(不断更新)
- 备用小知识[不断更新***]
- Start Python 学习笔记(琐碎知识,持续更新。。。)
- JAVA基础知识介绍,不断更新
- 计算机基础知识备忘录(不断更新)