c语言中switch语句流程图_C语言:C语言保留字(关键字)
保留字(reserved word)
保留字又稱關(guān)鍵字。
指在高級(jí)語(yǔ)言中已經(jīng)定義過(guò)的字,使用者不能再將這些字作為變量名或過(guò)程名使用。
每種程序設(shè)計(jì)語(yǔ)言都規(guī)定了自己的一套保留字。
例如:BASIC語(yǔ)言規(guī)定不能使用LIST作為變量名或過(guò)程名,因?yàn)長(zhǎng)IST是一個(gè)BASIC語(yǔ)言專用于顯示內(nèi)存程序的命令。
C有 22+10 = 32個(gè)關(guān)鍵字
C++ 有22+10+11+20 = 63 個(gè)關(guān)鍵字
JAVA 有22+ 9+ 17 = 48 個(gè)關(guān)鍵字 ps:以上內(nèi)容來(lái)自百科。
其中,C89中,(C語(yǔ)言標(biāo)準(zhǔn))中,
類型說(shuō)明保留字:
int,long,short,float,double,char,unsigned,signed,const,void,volatile,enum,struct,union
語(yǔ)句定義保留字:
if,else,goto,switch,case,do,while,for,continue,break,return,default,typedef
存儲(chǔ)類說(shuō)明保留字:
auto,register,extern,static
長(zhǎng)度運(yùn)算符保留字:
sizeof
具體含義如下:
下面,我們就幾個(gè)相對(duì)比較容易用錯(cuò)的保留字進(jìn)行分析,主要包括
return, void, const, break, continue
以下內(nèi)容參閱《c程序設(shè)計(jì)競(jìng)賽實(shí)訓(xùn)教程》和一些大牛博客結(jié)合寫(xiě)的。
1.return
return:結(jié)束一個(gè)函數(shù)并返回其后面表達(dá)式中的值。
初學(xué)的時(shí)候,有些不理解main 函數(shù)中return 0;有什么用,在寫(xiě)程序的時(shí)候老是忘記帶上了。其實(shí),帶上return 0;是很有必要的。
main函數(shù)的返回值用于說(shuō)明程序的退出狀態(tài),如果返回0,表示程序正常退出,否則表示程序異常退出。返回值傳遞給程序的激活者(操作系統(tǒng))。
如果沒(méi)有寫(xiě)return語(yǔ)句的話,c99(c語(yǔ)言標(biāo)準(zhǔn))規(guī)定編譯器自動(dòng)在生成的目標(biāo)文件中加入return 0;表示正常退出。
所以,為了代碼規(guī)范,我們一般都必須帶上return 0;
具體操作----- return (表達(dá)式);
其中,括號(hào)是可以省略的。 一般不省略,如果返回值為表示式的時(shí)候容易造成混淆。
return返回值的類型:一般是函數(shù)定義的類型,如果return后表示式的值類型和函數(shù)值的類型不一致,則以函數(shù)函數(shù)類型為準(zhǔn),即:函數(shù)類型決定返回值類型。
需要注意的一點(diǎn),也是易錯(cuò)的一點(diǎn)是:return不能返回指向局部變量的類型。----因?yàn)樵诤瘮?shù)結(jié)束時(shí)局部變量被自動(dòng)銷毀(上篇博客提及的局部變量的生存周期),則返回的指針為指向已釋放的空間,再通過(guò)此指針進(jìn)行操作就會(huì)產(chǎn)生錯(cuò)誤。
下面通過(guò)程序具體說(shuō)明:
看下輸出結(jié)果 4,3
程序中,函數(shù)test的返回值為指向局部變量num的指針,當(dāng)主函數(shù)調(diào)用test函數(shù)的時(shí)候,返回ptr指針并且賦值給p指針變量,即num變量的地址賦給了p,但是必須明白,在test函數(shù)結(jié)束的時(shí)候,局部變量num的空間被釋放了,這樣用p來(lái)引用這個(gè)空間就會(huì)出錯(cuò)。
乍一看,和預(yù)期的一樣,但是實(shí)際上,這樣的程序是存在隱患的。
下面改改這個(gè)程序,就知道錯(cuò)在哪了。
運(yùn)行結(jié)果: 15,7(也可能是15,9視具體環(huán)境而定。)
在這里,多了個(gè)test2函數(shù)。發(fā)現(xiàn)結(jié)果并不是我們預(yù)料的15,3 。 p指向空間的數(shù)據(jù)不是之前num所賦值的3.
這正印證了我們之前說(shuō)過(guò)了,這樣的返回存在隱患。 在test函數(shù)調(diào)用完后,系統(tǒng)釋放之前給num分配的空間,但是p指針仍然指向那塊區(qū)域。
在調(diào)用test2的時(shí)候,系統(tǒng)要為x,y分配空間。這時(shí)候就會(huì)把之前釋放的那塊空間給x,y再次分配使用,使用在賦值語(yǔ)句后,該空間的值發(fā)現(xiàn)了改變,使得*p發(fā)生了改變。
所以,切記 return不能返回指向局部變量的類型。
2.void
void :void為空類型。 void *為空類型指針。
其中,void a;是不允許的。 每次定義一個(gè)變量,系統(tǒng)都會(huì)為其分配空間,而void類型無(wú)法確定,系統(tǒng)就不知道該為它分配多大的空間,顯然是不合理的。
void *p;是允許的, 因?yàn)檫@是一個(gè)指針變量,系統(tǒng)都是默認(rèn)分配四個(gè)字節(jié)的空間,至于具體指向的空間總存放的數(shù)據(jù)類型,就由用戶自行操作。
并且,在操作的時(shí)候,要把該void指針強(qiáng)制轉(zhuǎn)換為相應(yīng)類型的指針后才可進(jìn)行操作。
如:
即:在使用void類型指針變量時(shí),其他類型的地址可以直接賦值給void類型的指針變量,但反過(guò)來(lái),void類型的指針變量賦值給其他類型的指針變量或取其所指空間數(shù)據(jù)時(shí)必須進(jìn)行強(qiáng)轉(zhuǎn)。
3.const
const:constant的縮寫(xiě),意為不變。 即用const修飾的變量的不允許改變的。也可稱為只讀變量。
例如: int const m = 10; const int m = 10; (二者可以認(rèn)為等價(jià),const定義一般的變量比較簡(jiǎn)單。例如該例中都是限定m為10)
但是要注意一點(diǎn),只讀變量雖然值不能改變,但它還是變量,不是常量。
如 int const M = 10; int a[M]; 這樣定義數(shù)組是錯(cuò)誤的。我們知道,定義數(shù)組時(shí),數(shù)組元素個(gè)數(shù)必須是常量(這樣系統(tǒng)才知道要分配多大的空間),而M的本質(zhì)是變量,只是值不改變的變量而已。
所以,一般我們定義數(shù)組采用這樣的操作:
下面討論下const定義指針,這就比較復(fù)雜了。
至于地址,數(shù)據(jù),拿const int *p;舉例。 此時(shí),p=&a;操作是允許的,(修改地址)。而*p=10;是允許的(試圖改變數(shù)據(jù)造成錯(cuò)誤)。
在判讀是修飾*p還是p時(shí),我們可以先將定義中的類型標(biāo)識(shí)符去掉(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后面的語(yǔ)句),繼續(xù)下次循環(huán)條件判斷;
2、不可作用于switch語(yǔ)句。當(dāng)在switch中使用,這個(gè)continue實(shí)際是作用于其所屬的循環(huán)結(jié)構(gòu);若它不屬于任何一個(gè)循環(huán),程序?qū)⒁虼藞?bào)錯(cuò)!
break
1、結(jié)束整個(gè)循環(huán),并停止下次循環(huán)條件判斷;
2、可以作用于switch語(yǔ)句。
具體區(qū)別如下:
break和continue的區(qū)別如下:
break可用于switch語(yǔ)句,表示跳出整個(gè)switch塊,而continue則不能用于switch語(yǔ)句
它們都可用于循環(huán)語(yǔ)句的循環(huán)體,所謂的區(qū)別也應(yīng)該是它們對(duì)循環(huán)次數(shù)的影響不同。break用于立即退出當(dāng)前循環(huán),而continue僅跳過(guò)當(dāng)次循環(huán)(本次循環(huán)體內(nèi)不執(zhí)行continue語(yǔ)句后的其它語(yǔ)句,但下次循環(huán)還會(huì)執(zhí)行)。舉例說(shuō)明。
上面的循環(huán)會(huì)因?yàn)閎reak語(yǔ)句而在i=6時(shí)提前終止,這樣s的最終值就是1+2+3+4+5
如將break換成continue
當(dāng)i=6時(shí)就不會(huì)將i累加到s中,s的最終值是1+2+3+4+5+7+8+9+10,唯獨(dú)少一個(gè)6。
如有侵權(quán),請(qǐng)聯(lián)系刪除!
原文:
【初識(shí)C語(yǔ)言】C語(yǔ)言保留字(關(guān)鍵字)詳解?mp.weixin.qq.com學(xué)習(xí)從來(lái)不是一個(gè)人的事情,要有個(gè)相互監(jiān)督的伙伴,工作需要學(xué)習(xí)C語(yǔ)言或者有興趣學(xué)習(xí)C語(yǔ)言的伙伴可以加我Q_2208165112。一起學(xué)習(xí),一起進(jìn)步。還有免費(fèi)學(xué)習(xí)資料可以給各位伙伴總結(jié)
以上是生活随笔為你收集整理的c语言中switch语句流程图_C语言:C语言保留字(关键字)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: docker -v 覆盖了容器中的文件_
- 下一篇: 华为手机日历倒计时_倒计时40小时!谁来