1.#define和const的區別
#define巨集是在預處理階段展開 const是在編譯執行階段使用
#define巨集沒有型別定義,不做檢查 const有型別定義,編譯階段會檢查型別
巨集定義不分配記憶體 變數定義分配記憶體
#define可以防止標頭檔案重複 const不行
#ifndef ***
def ***
endif
2.自動型別轉換 && 強制型別轉換
自動 char -> int ->double
強制 資料型別表示式都必須加括號,只在本次運算中臨時性轉換,不改變原資料型別及變數值,不遵循四捨五入
3.continue和break
break是跳出當前整個迴圈,continue是結束當前這一次迴圈,開始下一次迴圈
4.形參與實參
實參賦值給形參,引數傳遞時,資料型別與數量應保持一致
形參只有在被呼叫時分配記憶體單元,呼叫結束後釋放記憶體;實參在進行函式呼叫時,必須有確定的值
5.變數的儲存型別
每個變數和函式都有兩個屬性,型別和儲存型別,儲存型別分別是自動(auto),外部(extern),暫存器(register),靜態(static)
auto:函式體中定義的變數預設是auto,區域性變數
extern:在函式體外部宣告變數,就為變數永久的分配儲存
register:關係執行速度時,把經常使用的變數儲存在高速的記憶體暫存器中
static:允許區域性變數儲存它的原有值
6.指標
型別關鍵字 *指標變數名 取位址符& 間接定址運算子*用來得到指標變數指向的變數的值
變數的位址是乙個常量,不能對其進行賦值,變數的指標是乙個變數,其值可以改變
int (*compare)(int a,int b)
//compare是乙個指標變數,指向乙個有兩個整型引數,返回值為整型的函式,稱為函式指標
int *compare(int a,int b)
//函式的返回值是乙個整型指標
7.判斷是檔案還是資料夾
if(file.exists(path))
else if(directory.exists(path))
else
8.關於乙個簡單的判斷引數的定義
static bool od=true;
flag = !flag;
奇數時flag為true,偶數時為false
9.關於c語言處理時間的函式
獲取系統時間,距離2023年的毫秒數,並轉換為正常的時間來顯示
time_t lt;
lt = time(null); //當前系統時間距離2023年1月1日的毫秒數值
struct tm *tmp;
tmp = localtime(<);
char* format = "%y-%m-%d %h:%m:s%";
char strtime[100];
strftime(strtime, sizeof(strtime), format, tmp);
//strtime字串的格式如下
//2015-10-07 20:46:01
C語言缺陷與陷阱語義分析
語義分析 程式設計師本意是希望表示某種事物,而實際表示的卻是另外一種事物 1.指標和陣列 陣列值必須注意的兩點 1 c語言只有一維陣列,且陣列大小必須在編譯期作為乙個常數確定下來 2 對乙個陣列只能進行 確定該陣列的大小,以及獲得指向該陣列下標為0的元素的指標。只有在兩個指標指向同乙個陣列中的元素時...
C 之值語義與物件語義
iostream擴充套件 include 是不是太重量級了?class date void writeto std ostream os const private int year month day std ostream operator std ostream os,const date d...
c 語言基礎
三個訪問描述符 public private 和protected 都可以修飾類的資料成員和成員函式 public 可以可以被任何訪問,private 只能被該類的公,私成員函式,該類的友元函式或者友元類的成員函式訪問。protected 只能被該類的公,私成員函式和該類的派生類訪問。c 中除了,和...