CC++面试知识点

    技术2024-12-20  42

    1、使用 #define 定义一年有多少秒    

         #define SEC_PER_YEAR 365*24*60*60UL

         --注意UL的使用,使用长整型无符号,避免16位机器的益处

         --不将整个计算结果直接写出,更直观易懂,预处理器会帮忙处理

    2、MIN宏

         #define MIN (a)>(b): (b):(a)

     

        #define作用:

        --类似inline,可以提高代码运行效率

        --代码简洁,清晰

    3、函数指针

        int (*Func)(int*);

     

    4、static的运用

        -- 在函数体内定义变量,其值在整个程序运行过程中保持不变

        -- 在模块内定义的变量,今年能被此模块内的其他函数访问

        -- 在模块内定义函数,则此函数尽在能被此模块内其他函数调用

    5、const

         int const * a;     //整型值为常量,指针值可修改

         const int *a;      //整型值为常量,指针值可修改

         int * const a;     //指针值为常量,整型值可修改

         int const * a const; //两者都不可修改

    6、Volatile

        每次使用,都必须重读,不可使用寄存器中值

        -- 并行设备的硬件寄存器(如:状态寄存器)     -- 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)     -- 多线程应用中被几个任务共享的变量

     

    7、BIT manipulation

         设置某BIT位的值

         a |= (0x1<<5)  //设置第五BIT位为1

         a &= ~(0x1<<5)设置第五BIT位为0

     

    8、虚析构函数

         class Base{

    virtual ~Base(){};

    }

         class Derived: public Base{

    virtual ~Derived(){};

    }

     

       Base *p = new Derived();

      delete p;  //基类虚构函数时,避免了内存泄露。

     

    9、数据类型自动转换

       unsigned int a = 1;

       int b = -20;

       BOOL res = a+b>10;    //都自动转换为无符号后运算,-20转换为非常大整数

     

    10、注意机器字长

       unsigned int compZero = 0xFFFF;      //定义为  ~0  更为贴切

       unsigned int zero          = 0;

     

    11、typedef  与  #define

     

    typedef  int *   IntPtr;

    #define  int *   IntPtr;

    IntPtr a, b;

     

    最新回复(0)