C語言關(guān)鍵字
C語言中具有特殊含義的英文單詞,通常用于構(gòu)成語句,存儲(chǔ)數(shù)據(jù),定義數(shù)據(jù)類型等嗎,我們定義變量或函數(shù)時(shí)不得與其相同!其中一些在上一篇中我們有見到過,有些是我們接下來馬上要講解的內(nèi)容,其余的后面再實(shí)例分析,一共有32個(gè)關(guān)鍵字,內(nèi)容見下表:
可以大致分類一下進(jìn)行記憶。
if與switch
正如if是英文字面意思“如果”,在C語言中使用if作為判斷語句,判斷結(jié)構(gòu)要求程序員指定一個(gè)或多個(gè)要評(píng)估或測試的條件,以及條件為真時(shí)要執(zhí)行的語句(必需的)和條件為假時(shí)要執(zhí)行的語句(可選的)。C 語言把任何非零和非空的值假定為 true,把零或 null 假定為 false。和我們平時(shí)說話做假設(shè)一樣,if可以單獨(dú)使用,它的使用方法與流程圖如下:
if (test expression)
{
//測試表達(dá)式為真時(shí),執(zhí)行的語句
}
另外,它也可以和else一起使用,可以為各判斷條件設(shè)計(jì)程序塊,也可以使用多個(gè)else分支,使用方法和流程圖如下:
例一:
if (test expression)
{
//測試表達(dá)式為真時(shí),要執(zhí)行的語句
}
else
{
// 如果測試表達(dá)式為假,則執(zhí)行的語句
}
例二:
if (test expression1)
{
// 語句
}
else if(test expression2)
{
// 語句
}
else if (test expression3)
{
// 語句
}
……
else
{
// 語句
}
另外if語句還可以進(jìn)行嵌套,也就是在判斷中再進(jìn)行判斷,如果有的話也可以接著繼續(xù)嵌套下去,想想一下套娃就明白了,道理是一樣的,這應(yīng)該很容易明白吧。
在C語言中除了使用if進(jìn)行判斷也可以使用switch語句做條件判斷,它也被稱為開關(guān)語句,在某個(gè)判斷邏輯下,如果有多個(gè)與之對應(yīng)的結(jié)果,這時(shí)我們就可以使用它來實(shí)現(xiàn)出現(xiàn)那個(gè)結(jié)果就進(jìn)入那個(gè)分支,這兩種語法在一定條件下是可以互轉(zhuǎn)的,并且各有優(yōu)勢,其中switch必須配合case關(guān)鍵字一起使用,通常也會(huì)搭配break,continu,default語言使用。我們看一下它的使用方法與流程圖:
switch (expression)
{
case constant1:
// 語句
break;
case constant2:
// 語句
break;
……
default:
// 默認(rèn)語句
}
和if一樣它也可以進(jìn)行嵌套,這要邏輯合理即可,在使用過程中,我們通常會(huì)根據(jù)實(shí)際的使用需求來決定具體使用它兩中的那種,一般來時(shí)如果是簡單的條件判斷那肯定是使用if比較簡介,如果應(yīng)用場景中有很多相似分支,那我們就可以選擇使用switch。
if (test expression1)
{
if (test expression)
{
//測試表達(dá)式為真時(shí),要執(zhí)行的語句
}
else
{
// 如果測試表達(dá)式為假,則執(zhí)行的語句
}
}
else if(test expression2)
{
if (test expression)
{
//測試表達(dá)式為真時(shí),要執(zhí)行的語句
}
else
{
// 如果測試表達(dá)式為假,則執(zhí)行的語句
}
}
……
當(dāng)然以上都是典型的一些用法,在具體使用時(shí)還可以對它們進(jìn)行相互嵌套,有了良好的編程邏輯后我們要學(xué)會(huì)靈活運(yùn)用這些知識(shí)。
for與while
在C語言中當(dāng)我們需要進(jìn)行循環(huán)操作,這時(shí)就可以使用for或while語句了,這兩個(gè)詞的英文本意都有“直到xx才xx”的意思,只不過它們使用的語法各有差別,但兩者都可以實(shí)現(xiàn)互換。我們來看一下它們的具體使用方法。
以下是while的循環(huán)流程圖,如果條件成立就一直執(zhí)行,不成立就退出。
while (testExpression)
{
// 循環(huán)體中的語句
}
while還有一種使用方法是與do配合使用,就是不管條件怎么先執(zhí)行一遍再詢問條件,其實(shí)就是換了一種說法而已,但它們的不同就是在于前者先判斷后執(zhí)行,后者先執(zhí)行再判斷,使用時(shí)序根據(jù)語意選擇合適方式,它的具體方法和執(zhí)行流程如下:
do
{
//循環(huán)體內(nèi)的語句
}
while (testExpression);
for循環(huán)語句相對while和do…while使用格式有些不一樣,但意思是差不多的,我們來看一下:
for (initializationStatement; testExpression; updateStatement)
{
//循環(huán)體內(nèi)的語句
}
以上3中循環(huán)方式各有各的特點(diǎn),使用時(shí)根據(jù)語境進(jìn)行選擇。for循環(huán)語句的流程圖看起來比其他兩者復(fù)雜,其實(shí)使用起來還是很方便的,后面我們在再分別舉例對比測試。
循環(huán)語句也可以搭配break,continu對循環(huán)進(jìn)行控制,甚至能與goto語句一起使用,但goto語句容易引起程序結(jié)構(gòu)混亂一般不建議使用,我個(gè)人建議最好別用,所以不做講解,有興趣的朋友可以自行了解一下。
C語言定義函數(shù)
學(xué)會(huì)以上條件,和循環(huán)語句后,雖然你可能還是不會(huì)編程,但一些基本的編程的邏輯思維應(yīng)該是清楚了吧,現(xiàn)在來講解一下我們編程需要掌握的最后一個(gè)環(huán)節(jié),它就是定義函數(shù)。我們肯定已經(jīng)知道變量,常量是什么了,又知道了程序運(yùn)行時(shí)的一些判斷邏輯了,假設(shè)現(xiàn)在要你設(shè)計(jì)一個(gè)控制LED一閃一閃的程序,你腦海里應(yīng)該有一個(gè)大概的想法了吧?先點(diǎn)亮LED,各一段時(shí)間再熄滅LED,然后再繼續(xù)重復(fù),對吧,程序邏輯就是這么簡單!那么,我們要怎么執(zhí)行這些程序段呢?這就需要我們設(shè)置一個(gè)函數(shù)了,在C語言中一段代碼要能執(zhí)行必須包含一個(gè)函數(shù),這個(gè)函數(shù)就是main函數(shù),也叫主函數(shù)。所有的程序運(yùn)行都是從main函數(shù)開始,可能不好理解,簡單來說就是,main函數(shù)是必不可少的,當(dāng)程序編譯成機(jī)器代碼時(shí)編譯器會(huì)先找程序中是main函數(shù),找到了就進(jìn)入函數(shù)繼續(xù)編譯,沒找到就報(bào)錯(cuò)。
除了main函數(shù)之外,我們編程是可以將某個(gè)功能模塊的代碼封裝成一個(gè)函數(shù),然后在使用時(shí)直接調(diào)用,這樣就可以讓我們的代碼可讀性更強(qiáng),可維護(hù)性更高。
我們來看一下函數(shù)的的基本內(nèi)容:
●函數(shù)聲明 :必須在C程序中全局聲明函數(shù),以告知編譯器函數(shù)名稱,函數(shù)參數(shù)和返回類型。
●函數(shù)定義:它包含要執(zhí)行的實(shí)際語句。這是調(diào)用函數(shù)時(shí)控件所涉及的最重要方面。在這里,我們必須注意,該函數(shù)只能返回一個(gè)值。
●函數(shù)調(diào)用:可以從程序中的任何位置調(diào)用函數(shù)。參數(shù)列表在函數(shù)調(diào)用和函數(shù)聲明中要相同。我們必須傳遞與函數(shù)聲明中聲明的函數(shù)數(shù)量相同的函數(shù)。
以上說明可能比較專業(yè)化,簡單來說就是和變量的使用規(guī)則一樣,所有函數(shù)都要先定義后使用,并且如果你定義的位置在調(diào)用的位置之后,或函數(shù)定義和調(diào)用不在同一個(gè)文件那就必須在函數(shù)調(diào)用的之前對定義好的函數(shù)進(jìn)行聲明。對于初學(xué)者來說這是函數(shù)的一個(gè)難點(diǎn),我們后續(xù)會(huì)在使用案例中做更詳細(xì)的講解。
學(xué)會(huì)使用函數(shù)之后你就可以嘗試寫出自己的模塊功能代碼了,以后再使用相同功能時(shí)復(fù)制過去就可以進(jìn)行使用測試了。
函數(shù)定義示例:
return_type function_name(data_type parameter...)
{
//要執(zhí)行的代碼
}
printf與scanf
屏幕和鍵盤是計(jì)算機(jī)與外界進(jìn)行人機(jī)交互的主要工具,C語言中我們可以編程通過屏幕顯示信息,也可以通過鍵盤進(jìn)行輸入信息。C語言中最基礎(chǔ)的向屏幕輸出信息的函數(shù)是printf,scanf是其對應(yīng)的獲取鍵盤輸入信息的函數(shù)。但是它們時(shí)需要一定規(guī)則才能正確執(zhí)行操作的。其中使用到的一些特殊字符進(jìn)行轉(zhuǎn)義再使用某些特定字符進(jìn)行格式化輸入,輸出,具體如下表介紹:
這些是我們需要熟練使用的,編程練習(xí)的過程中多嘗試就可以容易的記住了。在51電單片機(jī)中是不可能驅(qū)動(dòng)得了電腦屏幕這么復(fù)雜的設(shè)備的,但我們可以應(yīng)用串口連接電腦,在通過這些函數(shù)在串口助手這樣的小工具上輸入輸出信息從而實(shí)現(xiàn)人機(jī)交換的目的。
C語言程序文件
C語言中編寫的代碼可能文件主要有.c和.h文件,.c文件就是我們存放代碼的主要文件,.h文件叫頭文件,它用來存放變量,函數(shù)的聲明以及使用到的其他.h文件等。我們把定義的變量,函數(shù)以及其他一些實(shí)現(xiàn)代碼功能必要的內(nèi)容保持在.c文件里。如果是簡單的程序,我們直接在一個(gè).c文件里面編寫就可以了,但以后需要寫更復(fù)雜的程序時(shí)我們就要學(xué)會(huì)將代碼分類,把個(gè)部分功能不相同的代碼用不同的.c文件保存,并分別為它們添加一個(gè)名稱相同的.h文件(名稱也可以不同,只是為了方便管理,所以最好是保存一致),這種方法就是模塊化編程方法,這是做項(xiàng)目開發(fā)時(shí)必須會(huì)使用的一種編程思維?,F(xiàn)在不懂沒關(guān)系,后面我們再一一講解。
C語言庫函數(shù)
前面我們說到了自己定義函數(shù),分類打包函數(shù),其實(shí)只要你安裝了C語言編譯器,在我們電腦系統(tǒng)里就會(huì)包含很多C語言源代碼了,這些代碼大多數(shù)都是官方編寫的,我們稱它們?yōu)楣俜綆煳募?。這些文件中就包含了官方庫函數(shù),我們可以直接調(diào)用它們。有了官方庫文件之后我們才能順利執(zhí)行我們自己編寫的代碼,事實(shí)上我們編寫的最簡單的例子都會(huì)使用到庫文件,所以想快速學(xué)習(xí)模塊化編程的朋友不妨看一下官方的代碼時(shí)怎么寫的。具體的知識(shí)我們后面子再一一講解。
評(píng)論
查看更多