C語言基礎語義

2021-09-06 20:31:54 字數 1718 閱讀 7440

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 中除了,和...