tft每日頭條

 > 生活

 > c語言關鍵字32個

c語言關鍵字32個

生活 更新时间:2024-09-06 08:49:54
C 語言标準定義的32 個關鍵字:

c語言關鍵字32個(語言标準定義的32)1

auto 聲明自動變量,缺省時編譯器一般默認為auto

int 聲明整型變量

double 聲明雙精度變量

long 聲明長整型變量

char 聲明字符型變量

float 聲明浮點型變量

short 聲明短整型變量

signed 聲明有符号類型變量

unsigned 聲明無符号類型變量

struct 聲明結構體變量

union 聲明聯合數據類型

enum 聲明枚舉類型

static 聲明靜态變量

switch 用于開關語句

case 開關語句分支

default 開關語句中的“其他”分支

break 跳出當前循環

register 聲明寄存器變量

const 聲明隻讀變量

volatile 說明變量在程序執行中可被隐含地改變

typedef 用以給數據類型取别名(當然還有其他作用)

extern 聲明變量是在其他文件正聲明(也可以看做是引用變量)

return 子程序返回語句(可以帶參數,也可不帶參數)

void 聲明函數無返回值或無參數,聲明空類型指針

continue 結束當前循環,開始下一輪循環

do 循環語句的循環體

while 循環語句的循環條件

if 條件語句

else 條件語句否定分支(與if 連用)

for 一種循環語句(可意會不可言傳)

goto 無條件跳轉語句

sizeof 計算對象所占内存空間大小

下面的篇幅就一一講解這些關鍵字。但在講解之前先明确兩個概念:

什麼是定義?什麼是聲明?它們有何區别?舉個例子:

A)int i;

B)extern int i;(關于extern,後面解釋)

哪個是定義?哪個是聲明?或者都是定義或者都是聲明?我所教過的學生幾乎沒有一人能回答上這個問題。這個十分重要的概念在大學裡從來沒有被提起過!

c語言關鍵字32個(語言标準定義的32)2

什麼是定義:所謂的定義就是(編譯器)創建一個對象,為這個對象分配一塊内存并給它取上一個名字,這個名字就是我們經常所說的變量名或對象名。但注意,這個名字一旦和這塊内存匹配起來(可以想象是這個名字嫁給了這塊空間,沒有要彩禮啊O(∩_∩)O~),它們就同生共死,終生不離不棄。并且這塊内存的位置也不能被改變。一個變量或對象在一定的區域内(比如函數内,全局等)隻能被定義一次,如果定義多次,編譯器會提示你重複定義同一個變量或對象。

什麼是聲明:有兩重含義。如下:

第一重含義:告訴編譯器,這個名字已經匹配到一塊内存上了(伊人已嫁,吾将何去何從?何以解憂,唯有稀粥),下面的代碼用到變量或對象是在别的地方定義的。聲明可以出現多次。

第二重含義:告訴編譯器,我這個名字我先預定了,别的地方再也不能用它來作為變量名或對象名。比如你在圖書館自習室的某個座位上放了一本書,表明這個座位已經有人預訂,别人再也不允許使用這個座位。其實這個時候你本人并沒有坐在這個座位上。

這種聲明最典型的例子就是函數參數的聲明,例如:

void fun(int i, char c);

好,這樣一解釋,我們可以很清楚的判斷:A)是定義;B)是聲明。那他們的區别也很清晰了。記住,定義聲明最重要的區别:定義創建了對象并為這個對象分配了内存,聲明沒有分配内存(一個抱伊人,一個喝稀粥O(∩_∩)O~)。

在c 中去解釋聲明和定義應該更好理解,放到c 環境中用類的方式來理解

"聲明"的嚴謹C 語意,是用以告訴編譯器類型及其細節,例如:

c語言關鍵字32個(語言标準定義的32)3

上述聲明僅告訴編譯器有自定義類型MyClass,編譯器僅對其進行語彙分析及名字的決議,并未占用内存!

"定義"的嚴謹C 語意,即内存占有,編譯器将在相對内存地址上為其對象定址!

要注意的是,我們不能簡單的說

string myString;

是聲明還是定義,判斷的原則是看是否占用内存。例如:

c語言關鍵字32個(語言标準定義的32)4

想要知道更多相關資訊 關注後 幫忙轉發哦,然後私信小編,回複 01 獲取C/C 零基礎資料 及教程!!!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved