1. 解釋#ifdef
#ifdef是條件指示符,用來判斷某個預處理器常量是否已被定義,如果該預處理器常量被定義,#ifdef后面的代碼才會被編譯。#ifdef的一個主要用途就是防止頭文件重復處理。
2. #define一個宏,比較兩個數的大小,不能使用大于、小于和if語句
3. staic的作用
1)static局部變量:內存分配在全局數據區。執行到聲明處時初始化,下次函數調用不再初始化,值維持上次的值。如果沒有顯示初始化,自動初始化為0. 作用域為局部作用域。
2)static全局變量:內存分配在全局數據區。如果沒有顯示初始化,自動初始化為0. 只在聲明它的文件內可見。
3) static函數:只在聲明它的文件內可見。
4)static成員變量:屬于整個類,類的所有對象只有一份拷貝。內存分配在全局數據區。
5)static成員函數:屬于整個類,不接收this指針,只能訪問statci成員變量和static成員函數。
4. const的作用
定義常量。修飾函數參數和返回值。修飾函數定義體。被const修飾,可以得到強制保護,預防意外修改,提高程序健壯性。
1)const修飾函數參數
- const只修飾輸入參數,輸出參數不需要const。
- 修飾指針傳遞的參數:防止意外修改指針指向的內容。對于值傳遞的參數,函數會自動產生臨時變量復制該參數,不需要const修飾。
- 修飾自定義類型引用傳遞的參數:自定義類型引用傳遞,不會產生臨時對象的構造、復制和析構,提高了效率。加上const修飾,防止修改該參數。
2)const修飾函數返回值
- 對于值傳遞的函數返回值,函數會自動產生臨時變量復制該參數,不需要const修飾。
- 修飾指針傳遞的函數返回值:該返回值的內容不能被修改,且只能被賦值給被const修飾的同類型指針。
- 修飾自定義類型引用傳遞的返回值:一般用在類的賦值函數中。
3)const修飾函數定義體: 任何不修改數據成員的函數都應該聲明為const類型。
5. 比較sizeof和strlen
1) sizeof是操作符,返回一個對象或類型名的字節長度,返回值類型為size_t. strlen是一個函數,計算給定字符串的長度,只能用char*做參數,且必須是‘/0’結尾的。
2)sizeof操作符是編譯時刻計算,可看做常量表達式。strlen是運行時刻計算的。
新聞熱點
疑難解答
圖片精選