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