C語言拾遺

Inside_Zhang發表於2015-11-21
  1. 保證某些全域性變數的常量性

    // c++, C++中不能通過變數來定義陣列
    const int ROW = 10;
    const int COL = 10;
    // C
    
    #define ROW 10
    
    
    #define COL 10
    
    or 
    
    enum 
    {
        ROW = 10,
        COL = 10
    };
  2. C-style型別轉換

    (new-type)expression
    static_cast<new-type>(expression)
    double res = (double)x/y;        // C-style type cast     
    double res = static_cast<double>(x)/y;  // C++-style
  3. 函式指標的定義

    typedef void(*func)();

  4. 全域性結構體變數也會被預設進行初始化

    typedef struct tagMemoRecord
    {
        int distance;
        int refCount;
    }MEMO_RECORD;
    
    MEMO_RECORD m1;
    
    int main(int, char**)
    {
        return 0;
    }
  5. 字串的長度

    char* str = "hello";
    std::cout << sizeof(str) << std::endl;
                // 4, 一個指標所佔位元組數
    std::cout << strlen(str) << std::endl;
                // 5, 一個字串的**有效長度**
    
    char str[] = "hello";
    std::cout << sizeof(str) << std::endl;
                // 6, "hello"在記憶體的中的表示為`hello\0`,共六個位元組
    std::cout << strlen(str) << std::endl;
                // 5, 字串的有效長度

    可到了吧,指標陣列名並不完全一致;

  6. 進位制

unsigned int a = 0xf;
std::cout << a << std::endl;
                // 15

相關文章