免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
「初識C語言」C語言保留字(關(guān)鍵字)詳解

保留字(reserved word)

保留字又稱關(guān)鍵字。

指在高級語言中已經(jīng)定義過的字,使用者不能再將這些字作為變量名或過程名使用。

每種程序設(shè)計語言都規(guī)定了自己的一套保留字。

例如:BASIC語言規(guī)定不能使用LIST作為變量名或過程名,因為LIST是一個BASIC語言專用于顯示內(nèi)存程序的命令。

C有 22+10 = 32個關(guān)鍵字

C++ 有22+10+11+20 = 63 個關(guān)鍵字

JAVA 有22+ 9+ 17 = 48 個關(guān)鍵字 ps:以上內(nèi)容來自百科。

其中,C89中,(C語言標(biāo)準)中,

類型說明保留字:

int,long,short,float,double,char,unsigned,signed,const,void,volatile,enum,struct,union

語句定義保留字:

if,else,goto,switch,case,do,while,for,continue,break,return,default,typedef

存儲類說明保留字:

auto,register,extern,static

長度運算符保留字:

sizeof

具體含義如下:

下面,我們就幾個相對比較容易用錯的保留字進行分析,主要包括

return, void, const, break, continue

以下內(nèi)容參閱《c程序設(shè)計競賽實訓(xùn)教程》和一些大牛博客結(jié)合寫的。

1.return

return:結(jié)束一個函數(shù)并返回其后面表達式中的值。

初學(xué)的時候,有些不理解main 函數(shù)中return 0;有什么用,在寫程序的時候老是忘記帶上了。其實,帶上return 0;是很有必要的。

main函數(shù)的返回值用于說明程序的退出狀態(tài),如果返回0,表示程序正常退出,否則表示程序異常退出。返回值傳遞給程序的激活者(操作系統(tǒng))。

如果沒有寫return語句的話,c99(c語言標(biāo)準)規(guī)定編譯器自動在生成的目標(biāo)文件中加入return 0;表示正常退出。

所以,為了代碼規(guī)范,我們一般都必須帶上return 0;

具體操作----- return (表達式);

其中,括號是可以省略的。一般不省略,如果返回值為表示式的時候容易造成混淆。

return返回值的類型:一般是函數(shù)定義的類型,如果return后表示式的值類型和函數(shù)值的類型不一致,則以函數(shù)函數(shù)類型為準,即:函數(shù)類型決定返回值類型。

需要注意的一點,也是易錯的一點是:return不能返回指向局部變量的類型。----因為在函數(shù)結(jié)束時局部變量被自動銷毀(上篇博客提及的局部變量的生存周期),則返回的指針為指向已釋放的空間,再通過此指針進行操作就會產(chǎn)生錯誤。

下面通過程序具體說明:

看下輸出結(jié)果 4,3

程序中,函數(shù)test的返回值為指向局部變量num的指針,當(dāng)主函數(shù)調(diào)用test函數(shù)的時候,返回ptr指針并且賦值給p指針變量,即num變量的地址賦給了p,但是必須明白,在test函數(shù)結(jié)束的時候,局部變量num的空間被釋放了,這樣用p來引用這個空間就會出錯。

乍一看,和預(yù)期的一樣,但是實際上,這樣的程序是存在隱患的。

下面改改這個程序,就知道錯在哪了。

運行結(jié)果:15,7(也可能是15,9視具體環(huán)境而定。)

在這里,多了個test2函數(shù)。發(fā)現(xiàn)結(jié)果并不是我們預(yù)料的15,3 。p指向空間的數(shù)據(jù)不是之前num所賦值的3.

這正印證了我們之前說過了,這樣的返回存在隱患。在test函數(shù)調(diào)用完后,系統(tǒng)釋放之前給num分配的空間,但是p指針仍然指向那塊區(qū)域。

在調(diào)用test2的時候,系統(tǒng)要為x,y分配空間。這時候就會把之前釋放的那塊空間給x,y再次分配使用,使用在賦值語句后,該空間的值發(fā)現(xiàn)了改變,使得*p發(fā)生了改變。

所以,切記 return不能返回指向局部變量的類型。

2.void

void :void為空類型。void *為空類型指針。

其中,void a;是不允許的。每次定義一個變量,系統(tǒng)都會為其分配空間,而void類型無法確定,系統(tǒng)就不知道該為它分配多大的空間,顯然是不合理的。

void *p;是允許的, 因為這是一個指針變量,系統(tǒng)都是默認分配四個字節(jié)的空間,至于具體指向的空間總存放的數(shù)據(jù)類型,就由用戶自行操作。

并且,在操作的時候,要把該void指針強制轉(zhuǎn)換為相應(yīng)類型的指針后才可進行操作。

如:

即:在使用void類型指針變量時,其他類型的地址可以直接賦值給void類型的指針變量,但反過來,void類型的指針變量賦值給其他類型的指針變量或取其所指空間數(shù)據(jù)時必須進行強轉(zhuǎn)。

3.const

const:constant的縮寫,意為不變。即用const修飾的變量的不允許改變的。也可稱為只讀變量。

例如:int const m = 10; const int m = 10; (二者可以認為等價,const定義一般的變量比較簡單。例如該例中都是限定m為10)

但是要注意一點,只讀變量雖然值不能改變,但它還是變量,不是常量。

如 int const M = 10; int a[M]; 這樣定義數(shù)組是錯誤的。我們知道,定義數(shù)組時,數(shù)組元素個數(shù)必須是常量(這樣系統(tǒng)才知道要分配多大的空間),而M的本質(zhì)是變量,只是值不改變的變量而已。

所以,一般我們定義數(shù)組采用這樣的操作:

下面討論下const定義指針,這就比較復(fù)雜了。

至于地址,數(shù)據(jù),拿const int *p;舉例。此時,p=&a;操作是允許的,(修改地址)。而*p=10;是允許的(試圖改變數(shù)據(jù)造成錯誤)。

在判讀是修飾*p還是p時,我們可以先將定義中的類型標(biāo)識符去掉(int),再觀察const后面修飾的內(nèi)容。

4 break,continue

至于break和continue,二者關(guān)系比較密切,結(jié)合探討。break退出當(dāng)前循環(huán),continue退出當(dāng)次循環(huán)

continue

1、結(jié)束本次循環(huán)(不執(zhí)行本次循環(huán)中continue后面的語句),繼續(xù)下次循環(huán)條件判斷;

2、不可作用于switch語句。當(dāng)在switch中使用,這個continue實際是作用于其所屬的循環(huán)結(jié)構(gòu);若它不屬于任何一個循環(huán),程序?qū)⒁虼藞箦e!

break

1、結(jié)束整個循環(huán),并停止下次循環(huán)條件判斷;

2、可以作用于switch語句。

具體區(qū)別如下:

break和continue的區(qū)別如下:

break可用于switch語句,表示跳出整個switch塊,而continue則不能用于switch語句

它們都可用于循環(huán)語句的循環(huán)體,所謂的區(qū)別也應(yīng)該是它們對循環(huán)次數(shù)的影響不同。break用于立即退出當(dāng)前循環(huán),而continue僅跳過當(dāng)次循環(huán)(本次循環(huán)體內(nèi)不執(zhí)行continue語句后的其它語句,但下次循環(huán)還會執(zhí)行)。舉例說明。

上面的循環(huán)會因為break語句而在i=6時提前終止,這樣s的最終值就是1+2+3+4+5

如將break換成continue

當(dāng)i=6時就不會將i累加到s中,s的最終值是1+2+3+4+5+7+8+9+10,唯獨少一個6。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
高質(zhì)量C/C++編程(片段)
const在函數(shù)前與函數(shù)后的區(qū)別
嵌入式程序設(shè)計的相關(guān)編寫規(guī)范
Typedef和define
程序代碼編寫規(guī)范
C/C :基本語法看這一篇就夠了
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服