1. 關鍵字
c語言中的關鍵字共32個,可分為以下幾類:
1-1 基本資料型別(5個)
void :宣告函式無返回值或無引數,宣告無型別指標,顯式丟棄運算結果
char :字元型型別資料,屬於整型資料的一種
int :整型資料,通常為編譯器指定的機器字長
float :單精度浮點型資料,屬於浮點資料的一種
double :雙精度浮點型資料,屬於浮點資料的一種
1-2 型別修飾關鍵字(4個)
short :修飾int,短整型資料,可省略被修飾的int。
long :修飾int,長整形資料,可省略被修飾的int。
signed :修飾整型資料,有符號資料型別
unsigned :修飾整型資料,無符號資料型別
1-3 複雜型別修飾關鍵字(5個)
struct :結構體宣告
union :共用體宣告
enum :列舉宣告,用於乙個變數存在幾種可能的取值,相當於一系列的#define xx xx
typedef :宣告型別別名,為已有的型別重新命名
typedef
int size; size i =5;
typedef
enum workday;
// workday被賦予列舉型別的功能,可用來定義其他變數
workday today;
// today是乙個列舉型別,且其只能在一定範圍內取值。
sizeof :得到特定型別或特定型別變數的大小
1-4 儲存型別關鍵字(6個)
auto :指定為自動變數,由編譯器自動分配及釋放。通常在棧上分配
static :指定為靜態變數,分配在靜態變數區,修飾函式時,指定函式作用域為檔案內部
static作用詳解
static例項說明
對於區域性變數:static區域性變數只被初始化一次,下一次的運算依據上一次的結果值
register :指定為暫存器變數,建議編譯器將變數儲存到暫存器中使用,也可以修飾函式形參,建議編譯器通過暫存器而不是堆疊傳遞引數
extern :指定對應變數為外部變數,即標示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。
const :與volatile合稱「cv特性」,指定變數不可被當前執行緒/程序改變(但有可能被系統或其他執行緒/程序改變)
volatile :與const合稱「cv特性」,指定變數的值有可能會被系統或其他程序/執行緒改變,強制編譯器每次從記憶體中取得該變數的值
1-5 跳轉結構(4個)
return :用在函式體中,返回特定值(或者是void值,即不返回值)
break :跳出當前迴圈或switch結構
goto :無條件跳轉語句
1-6 分支結構(5個)
if :條件語句,後面不需要放分號
else :條件語句否定分支(與if連用)
switch :開關語句(多重分支語句)
case :開關語句中的分支標記
default :開關語句中的「其他」分支,可選。
1-7 迴圈結構(3個)
for:for迴圈結構
do :do迴圈結構,do 1 while(2); 的執行順序是1->2->1…迴圈,2為迴圈條件
while :while迴圈結構、
2. 條件編譯
參考鏈結
2-1 #if vs. if
#if 為條件編譯的一種,條件編譯裡面有判斷語句,比如 #if 、#else 、#elif 及 #endif
它的意思是如果巨集條件符合,編譯器就編譯這段**,否則,編譯器就忽略這段**而不編譯,如
#if a
// 滿足條件a,則編譯**a
code a
#endif
而 if 語句則不然,if 是 c 語言中的關鍵字,它根據表示式的計算結果來覺定執行那個語句,它裡面的每個分支都編譯了的, 如
#define a 0
if(a >1)
printf
("a > 1");
//編譯器編譯該語句,但因為a == 0 未執行
else
if(a ==1)
printf
("a == 1");
//編譯器編譯該語句,但因為a == 0 未執行
else
printf
("a < 1");
//編譯器編譯該語句,因為a == 0 故執行
2-2 #if defined
如果定義了巨集 x,則會編譯** x,否則不編譯。
#if defined (x)
code x
#endif
C語言 條件編譯和static關鍵字
include ifdef hello char c hello world 如果hello這個巨集存在,包含這段 else char c no zuo,no die 否則包這段 endif int main 程式想通過記住之前的值,然後不斷疊加上去 include int count 0 int ...
C語言基礎知識 一 關鍵字
儲存類別說明符變數 auto register static extern thread local typedef 儲存型別限定符 const volatile restrict atomic 1 register 暫存器變數,c語言要求用register修飾的變數通常儲存在cpu的暫存器中,防止...
C語言之關鍵字 巨集定義 條件編譯
區域性變數 特點 注意 區域性變數沒有固定的初始化值,開發中千萬不能使用未初始化的區域性變數 儲存位置 區域性變數儲存在棧中,當作用域結束系統會自動釋放棧中的的區域性變數。特點 如果存在和全域性變數同名的區域性變數,那麼區域性變數會覆蓋全域性變數 注意 全域性變數如果沒有進行初始化,系統缺省會將全域...