zoukankan      html  css  js  c++  java
  • C++ 基础知识 (一)

    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

    sizeof("") -> 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 字节

     

  • 相关阅读:
    常见消息引擎系统对比
    kafka(一)入门
    pycharm工具的使用
    VMware下安装Ubantu 18.04
    VMware虚拟机下Ubuntu安装VMware Tools详解
    python--or 和 and 表达式
    django使用缓存之drf-extensions
    数据结构--线性表之链表
    Redis配置主从时报错“Could not connect to Redis at 192.168.0.50:6379: Connection refused not connected>”
    Rsync+sersync(inotify)实现数据实时双向同步
  • 原文地址:https://www.cnblogs.com/zhouzhuo/p/3668677.html
Copyright © 2011-2022 走看看