1. 程式人生 > >C語言的關鍵字及其部分關鍵詞詳細用法

C語言的關鍵字及其部分關鍵詞詳細用法

      1.總述

      關鍵詞是由C語言規定的具有特定意義的字串,通常也稱為保留字,使用者定義的識別符號不應與關鍵詞相同,C語言的關鍵字共有32個,根據關鍵字的作用,可分其為資料型別關鍵字、控制語句關鍵字、儲存型別關鍵字和其它關鍵字四類,具體如以下表格中顯示:

型別關鍵詞簡要說明
資料型別關鍵字char 宣告字元型變數或函式
double 宣告雙精度變數或函式
enum宣告列舉型別 
float宣告浮點型變數或函式 
int宣告整型變數或函式 
long宣告長整型變數或函式 
short宣告短整型變數或函式 
signed宣告有符號型別變數或函式 
struct宣告結構體變數或函式 
union宣告共用體資料型別 
unsigned宣告無符號型別變數或函式 
void宣告函式無返回值或無引數,宣告無型別指標(基本上就這三個作用)
控制語句關鍵字 for一種迴圈語句(迴圈語句關鍵詞)
 do 迴圈語句的迴圈體(迴圈語句關鍵詞)
 while 迴圈語句的迴圈條件(迴圈語句關鍵詞)
 break跳出當前迴圈(迴圈語句關鍵詞)
 continue結束當前迴圈,開始下一輪迴圈(迴圈語句關鍵詞)
if條件語句分支(條件語句關鍵詞)
else 條件語句否定分支(條件語句關鍵詞)
goto無條件跳轉語句(條件語句關鍵詞)
switch用於開關語句(開關語句)
case開關語句分支(開關語句)
default開關語句中的“其他”分支(開關語句)
return 子程式返回語句(返回語句)
儲存型別關鍵字auto宣告自動變數(一般不使用)
extern宣告變數是在其他檔案正宣告(也可以看做是引用變數)
register宣告暫存器變數
static宣告靜態變數
其它關鍵字const宣告常型別,常型別的變數或物件的值是不能被更新的,可使用在常量定義,指標定義,函式定義等處,與volatile合稱“cv特性”,指定變數不可被當前執行緒/程序改變(但有可能被系統或其他執行緒/程序改變)
sizeof用於計算特定型別或特定型別變數的資料型別長度
typedef常規變數型別定義,資料型別取別名,指標型別定義,函式地址說明,函式宣告,函式指標定義等
volatile說明變數在程式執行中可被隱含地改變 說明變數在程式執行中可被隱含地改變,與const合稱“cv特性”,指定變數的值有可能會被系統或其他程序/執行緒改變,強制編譯器每次從記憶體中取得該變數的值

  2.部分關鍵詞進一步說明     

  下面針對enum,union,extern,static,const,typedef,volatile這幾個關鍵詞做出較為詳細的說明:

   2.1 enum 

     在實際問題中,有些變數的取值被限定在一個有限的範圍內。例如,一個星期內只有七天,一年只有十二個月,一個班每週有六門課程等等。如果把這些量說明為整型,字元型或其它型別顯然是不妥當的。為此,C語言提供了一種稱為“列舉”的型別。在“列舉”型別的定義中列舉出所有可能的取值,被說明為該“列舉”型別的變數取值不能超過定義的範圍。應該說明的是,列舉型別是一種基本資料型別,而不是一種構造型別,因為它不能再分解為任何基本型別。

    如同結構和聯合一樣,列舉變數也可用不同的方式說明,即先定義後說明,同時定義說明或直接說明。設有變數DAY1,DAY2,DAY3被說明為上述的DAY,可採用下述任一種方式:
enum DAY { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY };
enum weekday DAY1,DAY2,DAY3;
或者為:
enum DAY { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY } DAY1,DAY2,DAY3;
或者為:

enum { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY } DAY1,DAY2,DAY3;

例:

#include <stdio.h>
int main()
{
  enum DAY { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY } DAY1,DAY2,DAY3;
  DAY1=SUNDAY;
  DAY2=MONDAY;
  DAY3=TUESDAY;
  printf("%d,%d,%d\n",DAY1,DAY2,DAY3);
  DAY1=(enum DAY)2;
  printf("%d,%d,%d\n",DAY1,DAY2,DAY3);
}
輸出結果:
0,1,2
2,1,2

注:

      列舉值是常量,不是變數,不能在程式中用賦值語句再對它賦值;
      列舉元素本身由系統定義了一個表示序號的數值,從0開始順序定義為0,1,2…。如在DAY中,SUNDAY值為0,MONDAY值為1,…,SATURDAY值為6;
      只能把列舉值賦予列舉變數,不能把元素的數值直接賦予列舉變數;
      如一定要把數值賦予列舉變數,則必須用強制型別轉換;

      列舉元素不是字元常量也不是字串常量,使用時不要加單、雙引號;

例:

#include <stdio.h>
int main()
{
  enum DAY { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY } DAY1,DAY2,DAY3;
  DAY1=SUNDAY;//正確,能把列舉值賦予列舉變數
  DAY2=MONDAY;//正確,能把列舉值賦予列舉變數
  DAY3=TUESDAY;//正確,能把列舉值賦予列舉變數
  DAY1=(enum DAY)0;//正確,如一定要把數值賦予列舉變數,則必須用強制型別轉換,其意義是將順序號為0的列舉元素賦予列舉變數DAY1
  DAY2=(enum DAY)1;//正確,如一定要把數值賦予列舉變數,則必須用強制型別轉換,其意義是將順序號為1的列舉元素賦予列舉變數DAY2
  DAY3=(enum DAY)2;//正確,如一定要把數值賦予列舉變數,則必須用強制型別轉換,其意義是將順序號為2的列舉元素賦予列舉變數DAY3
  /*對於DAY1=0;DAY2=1;DAY3=2;的編譯在ubuntu的編譯器下可以通過且可以把相應的值賦給相應變數,但是在VC下編譯報錯*/
  DAY1=0;//錯誤,不能把元素的數值直接賦予列舉變數
  DAY2=1;//錯誤,不能把元素的數值直接賦予列舉變數
  DAY3=2;//錯誤,不能把元素的數值直接賦予列舉變數
  SUNDAY=5;//錯誤,列舉值是常量,不是變數,不能在程式中用賦值語句再對它賦值
  MONDAY=6;//錯誤,列舉值是常量,不是變數,不能在程式中用賦值語句再對它賦值
  return 0;
}

    注:列舉值的常量值在沒有被賦值的情況下,系統預設給它的第一個值賦0,後面的依次為1,2,3;不過也可以直接指定某個或者某些列舉值的數值,比如說,星期日對應0對中國人來說不好接受,那麼我們這樣定義: enum DAY { MONDAY=1,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY } ;這樣的話,TUESDAY就將等於2,直接到SUNDAY等於7.  另:列舉型別定義規定,預設低一些列舉成員值為0,後一項列舉成員的值自動取前一項的列舉成員的值加1,在實際應用中,第一項的值不一定為0,所有的列舉變數也不一定是連續的,這時就需要顯示賦值。 另:列舉賦值時不可以有重複,否則會報錯;儘量從小到大排列,雖然亂序編譯不會報錯,但是會影響閱讀和維護。

例:

TEST
{
	TEST1=1,  //從1開始,而不是0
        TEST2,    //預設加1,所以TEST2為2
        TEST10=10,//出現不連續,TEST10是10
        TEST11    //上一個值加一得到TEST11是11
}

相關推薦

C語言關鍵字及其部分關鍵詞詳細用法

      1.總述      關鍵詞是由C語言規定的具有特定意義的字串,通常也稱為保留字,使用者定義的識別符號不應與關鍵詞相同,C語言的關鍵字共有32個,根據關鍵字的作用,可分其為資料型別關鍵字、控制語句關鍵字、儲存型別關鍵字和其它關鍵字四類,具體如以下表格中顯示:型別關鍵

讀書筆記-C語言關鍵字

C語言 C語言關鍵字 001 關鍵字 C語言一共32個關鍵字 1. 聲明和定義 在開始認識關鍵字前,必須要明白什麽是聲明,什麽事定義: 定義:(編譯器)創建一個對象,為這個對象分配一段內存並給他取上一個名字。在一個作用域內,一個變量或者對象只能定義一次,並且定以後為它分配的內存不可變; 聲明:1、

C語言關鍵字分類整理

lse ner num 結構化 struct tex 靈魂 bool ext C語言總覽: 強類型,面向過程 簡潔、靈活:32個關鍵字(C99標準新增5個,C11新增7個),9種控制語句,34種運算符 數據類型豐富,運算符豐富 結構化(控制語句)、模塊化(函數) 靈魂、特

32個C語言關鍵字

size 數據 計算表達 CP nio 占用 定義數據 str 整型 auto  局部變量(自動儲存) break  無條件退出程序最內層循環 case switch  語句中選擇項 char  單字節整型數據 const  定義不可更改的常量值 contin

C語言關鍵字及運算符操作

oat 分享 限定 改變 truct bce 基本 blog col 1、數據類型與變量的本質 數據類型 :數據類型可以理解為固定內存大小的別名,是創建變量的模子變量本質 :變量是一段實際連續存儲空間的別名,程序中通過變量來申請並命名存儲空間,通過變量的名字可以使用存儲空間

統計C語言關鍵字出現次數

man scrip author != free string ret str 個數 統計C語言關鍵字出現次數 《C程序設計語言》K&R版本第6章結構6.3結構數組內容 /* Name: 統計c語言關鍵字出現次數 Copyright: A

C語言關鍵字淺析-break

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### break關鍵字算是最常用的關鍵字之一了 常見於程式的迴圈結構和選擇結構中   break的作用是: 結束當前迴圈並跳出本層迴圈體。   1、迴圈結構中的bre

C語言關鍵字淺析-auto

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### 從C語言的關鍵字的字母序上看,auto關鍵字一般都是排在第一個的 但這並不能說明它是編碼過程中編寫的最多的關鍵字 也許你打continue的速度比打一個auto還快上幾毫秒 為什麼我不願意直接

C語言關鍵字淺析-case

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### case語句是C語言中switch開關語句中常用的關鍵字 將switch語句後的小括號中的變數視為引數 如果下面某一個case後跟的常量與引數相同 則從該case後的程式碼開始執行 &nb

C語言關鍵字“static”

關鍵字static在C語言中主要有三種用法: ①static修飾區域性變數:延長區域性變數的生命週期,作用域不變,且使得區域性變數儲存在靜態區,在不初始化的情況下預設為0. int fun() { static int num; num++; printf("%d ", num)

C語言關鍵字(三)

之前的兩篇文章 嵌入式Linux:c語言深度解剖(資料型別關鍵字)​zhuanlan.zhihu.com 嵌入式Linux:c語言深度解剖(入門篇)​zhuanlan.zhihu.com 這篇檔案繼續講解C語言關鍵字 想問大家一個問題,什麼是宣告什麼是定義? 舉個例子:

C語言關鍵字淺析-short

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### short,本意是“短,矮”的意思,在C語言中宣告一種短整數型別,與long相對應 short與int類似,是較早出現的資料型別和較早使用的關鍵字之一,使用short是希望在記憶體中的佔用空間比int

C語言關鍵字淺析-return

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### return關鍵字是C程式中最常見的關鍵字之一 對於一個最簡單的demo程式,或者說你最早接觸的HELLO WORLD程式,裡面至少有兩個你最早見到的關鍵字 int和return(注意,inclu

C語言關鍵字淺析-restrict

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### restrict是C語言中的一個型別限定詞,如果在程式設計的時候不是很常用C語言指標方面的語法,可能對這個關鍵字就不是很熟悉 字面上講,restrict意為“嚴格的”,我們可以想象為“嚴格地限定”

C語言關鍵字淺析-register

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### register字面意思即計算機科學裡講的暫存器 C語言中有5大儲存類:自動類、暫存器類、具有外部連結的靜態類、具有內部連結的靜態類、空連結的靜態類 其中,register是宣告暫存器類的暫存器變

C語言關鍵字淺析-long

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### long,顧名思義是“長”的意思 在C語言中long關鍵字常見於宣告長整型變數,主要特徵就是其佔用記憶體的長度不會比int短(注意是大於等於關係,後面有解釋) 而且在C99標準中還添加了long

C語言關鍵字淺析-int

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### int,幾乎是大部分學習C的人最早認識的一個關鍵字,似乎也是各種原始碼中最常見的關鍵字之一 int不僅是很多main函式的型別,還陪伴了我們學習列印輸出、加減乘除求模、排序、查詢……  

C語言關鍵字淺析-if

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### if,幾乎很多高階語言中最常見的關鍵字 經典的字面意思——如果。如果發生了什麼,那麼會怎樣,就像發出了一聲來自遠古的神祕叩問 人生、歷史,太多這樣的例子了,真想把這些例子放在今天的demo裡面表示

C語言關鍵字淺析-extern

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### extern的本意是external,是C語言5個儲存類中 外部儲存類(external storage class)的簡寫,這個型別的特徵是一種具有外部連結的靜態變數, 且具有檔案作用域、外部連

C語言關鍵字淺析-for

### C語言關鍵字淺析系列 ### ### ISO/ANSI C 關鍵字 ### for關鍵字似乎並不能從其字面本身看出其含義 但這是個最常見的關鍵字,而且在迴圈結構的使用中也基本是最多的 同while一樣,for迴圈是一個入口條件迴圈,並且在某些方面比while顯得更簡潔幹練