您的位置:首页 > 编程语言 > C语言/C++

C++ 基础知识 (一)

2014-04-16 15:06 134 查看
1. const 可以提高效率, 编译器通常不为普通 const 常量分配存储空间, 而是将它们保存在符号表中, 这使它成为编译期间的一个常量, 存取不需要内存操作, 所以效率比较高

 

2. volatile 关键字. 用于多线程程序中, 一个定义为 volatile 的变量是说这个变量可能会被意想不到的改变, 这样编译器就不会去假设这个变量的值了. 使用 volatile 修饰的变量, 编译器不会对其进行优化, 每次读取时都会去内存中读

 

3. ASSERT() 断言. 用于 ASSERT(n != 0) 表示当 n == 0 时程序会退出,

 

4. int main(int argc, char** argv)

argc 是输入命令的条数, argv 存储命令

 

5. new/delete 和 malloc/free 的区别

5.1 都可以动态分配和回收空间

5.2 new 是类型安全的, int *p = new float[2] 是错误的, 但 malloc 检测不出

5.3 new 调用构造函数, delete 调用析构函数

5.4 malloc/free 需要库文件 stdlib.h 支持

 

6关键字 explicit 的作用. 明确指出禁止隐式转换.

 

7. strlen 和 sizeof

strlen("\0") -> 0

sizeof("\0") -> 2

 

8. 引用和指针的区别

8.1指针可以为空, 引用必须指向某个值

8.2 指针可以重新赋值, 引用不可以

8.3 指针和引用都可以用于面向对象的多态

8.4 指针使用前需要判断是否为空, 引用不需要

8.5 引用由指针实现

 

9. typedef 和 define 的区别

9.1 typedef 支持类型检查, 增加可读性

9.2 作用于不同, define 是全局的, typedef 有作用域

 

10. struct 和 union

typedef union {double i; int k[5], char c;} DATE

struct {int cat; DATE cow; double dog;} too;

int 4 自己, double 8 字节, union 也需要对齐, 所以 DATE 需要 24 字节

而 too 的大小也按 8 字节对齐, 所以 too 是 40 字节

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: