當前位置:編程學習大全網 - 編程語言 - 10分鐘了解C語言基本語法知識

10分鐘了解C語言基本語法知識

相信妳已經看到了第壹個示例代碼的效果了。這個程序所實現的效果很簡單,就是在屏幕上輸出了壹行字符"Hello World"。

#include <stdio.h>

int main()

{

printf("Hello World\n");

return 0; ?

}

我們根據這壹小段代碼,借此了解壹些C語言的基礎語法知識。

1. 主函數

首先,主函數main,壹個標準的主函數如下:

int main() ?// ?這是主函數

{

return 0; ?// ?主函數返回值

}

main翻譯成中文是主要的、最重要的意思,而在C語言裏面表示壹個主函數。(稍後我們會討論什麽是計算機語言裏面的函數,以及主函數在C語言程序中的存在意義。)

雙斜杠後面的為註釋,打壹個比較形象的比喻,註釋就類似於老師在作業本上的批註。

壹般來說,註釋用於標註這段代碼的用途或解釋思路等。因為註釋不會被當做代碼進行編譯,所以無論添加什麽註釋內容,都不會對代碼的實際運行產生任何影響。

如上代碼中,用註釋標出了哪裏為主函數,哪裏是函數的返回值。

2. 什麽是函數?

我們先談談什麽是函數?在大家的認知裏面,函數是數學領域的壹個名詞,它可能是如下圖所示:

但是,這只是數學領域中的函數,與編程語言中的函數完全不同。

在編程語言裏面,妳可以把函數看做壹個盒子,這個盒子有如下幾個特性:

00001.?開始執行時,函數可以被輸入壹些值

00002.?執行過程中,函數可以做壹些事情

00003.?執行完成後,函數可以返回壹些值

讓我們看看我們的這個主函數,在這3個特性上,分別做了什麽。

00001.?主函數什麽都沒有輸入

00002.?主函數打印了壹行字到屏幕上

00003.?主函數返回了0

其中,int表明了函數的返回值類型,int是integer(整數)的縮寫。

main是函數名,main後面的括號()內為輸入參數,目前為空。

return後跟函數的返回值,為0。而0是壹個整數,和函數名前面的int對應。

我們總結壹下函數的寫法公式。

函數返回值類型 函數名(函數輸入參數值) ?

{

做點什麽事情

return 函數返回值;

}

3. 寫壹個自己的函數

我們不如趁熱打鐵,根據上面的函數寫法的公式,寫壹個兩個整數加法的函數。這個函數需要做到:輸入兩個整數,返回他們相加的結果。

這個既然這個函數是用於計算加法的,我們把函數名取名為add。當然自定義函數的函數名可以按照自己的喜好來寫,就算寫成aaaaa也行。不過,為了函數名擁有語義化,方便人閱讀理解,我們壹般使用英文來作為函數名。

// ?這壹段代碼被稱之為add函數的函數定義

int add(int a, int b)

{

return a+b;

}

好的,那我們寫完了壹個add函數了。這壹段代碼被稱之為add函數的函數定義。

4. 主函數是整個C語言程序的入口

上面我們已經自己定義好了壹個add函數,那我們需要怎樣來使用它呢?add函數能直接運行嘛?

答案是不行的。

所有的C語言代碼都有壹個起始入口,而這個入口就是主函數main。進入了主函數以後,才能經由主函數來調用其他函數。

這也意味著,每個C語言代碼,只能有且只有壹個main函數。

我們把代碼稍微修改,現在代碼如下。

#include <stdio.h>

int add(int a, int b) ?

{

return a + b;

}

int main()

{

int result;

result = add(2, 3);

printf("%d", result);

return 0;

}

當程序運行時,首先會進入主函數main。接著調用我們剛剛編寫的add函數了。我們傳了2個值分別是整數2和3給add函數。

函數的定義中規定,傳2個參數,我們調用的時候,也必須傳2個,並且類型也需要壹致,否則編譯會報錯。

那麽自然地,我們會想到,主函數是被誰調用的?主函數的返回值必須是int嗎?

主函數在程序開始的時候被自動調用,不需要在程序內主動調用主函數。

而主函數的返回值會返回給調用這個程序的程序。

C語言標準中規定主函數有返回值且必須是int。如果程序正常結束,壹般將返回值設置為0。

5. 要調用函數,必須先知道函數。

我們再來看看,編譯器是怎麽理解add這個標識符的。

編譯器會從代碼開始,按照從上往下的順序閱讀代碼。

編譯器首先看到了壹個函數的定義,描述了壹個叫add的函數。接著,在main中需要使用add,由於編譯器已經知道了add的定義,因此編譯器可以正常編譯通過。

但是,如果將函數定義和函數調用反過來呢?

首先,編譯器看到了add標識符,編譯器會很疑惑,add是什麽呢?編譯器無法理解add究竟是什麽。因此,編譯器將報錯,並停止編譯。

6. 什麽是變量?

在add函數計算完畢之後,需要有壹個東西來接受add返回回來的值。所以,我們在add前面聲明了壹個int整型的變量。

什麽是變量呢?妳可以把它看做壹個空箱子,裏面可以裝任何其他的和它類型壹致的值。

result只是我們給它起的壹個名字,當然,妳可以任意起名。比如叫he,叫xiangzi,都可以。

我們把add返回回來的5,裝進了result。因此,result裏面裝著的值是5了。

=等號,在C語言中是賦值運算符,相信妳已經發現它有把右邊的值裝進左邊變量的功能了。和函數壹樣,這裏的等號和數學裏面的等號,也是有很大不同的,它並不是相等的意思。

賦值運算符,是能將符號右邊的值,裝進左邊的變量的壹種運算符。

下圖就是add函數接受2,3為輸入,返回5,被賦值號=賦值給result的流程了。

那我們能不能這樣寫呢?去掉int result;這壹條。

int main()

{

result = add(2, 3);

printf("%d", result);

return 0;

}

答案是不行的,變量必須先聲明後使用。

編譯器看到result標識符,但是從未見過result的定義時,肯定也會疑惑它究竟是個什麽類型的變量,甚至它有可能不是變量而是壹個函數。這樣,編譯器只能遺憾得給出壹個編譯錯誤的提示,並結束編譯了。

int result;

妳必須像上面這樣,聲明有壹個變量,名字叫result,類型是int。接下來,編輯器就能記下result標識符為壹個int類型的變量。在後面的代碼中,即可愉快地使用這個result變量了。

7. 什麽是字面常量?

那麽,像2,3,這種數值,需不需要聲明呢?

不需要,他們是常量,無法被更改。並且壹旦被寫出來,就已經知道它們是整型的常量了。

同樣的,字符串字面常量也不需要被聲明,例如:"Hello World\n"。被雙引號包裹的,我們認為它是壹個字符串,以區別於數值。

變量我們可以通過賦值來更改,常量不能更改,所以妳不能對它進行賦值。

2 = 3; // ?錯誤

"Hello" = "World"; // ?錯誤

8. printf函數

#include <stdio.h>

int main()

{

printf("Hello World\n");

return 0; ?

}

現在,妳應該明白了這段代碼的大部分含義了。我們再進壹步,把它全部解析完。

和add壹樣,printf也是壹個函數,但是這個並不是壹個自定義函數,而是壹個系統自帶的函數。

我們把字符串字面常量"Hello World\n"傳給了printf函數。運行代碼時,我們在屏幕上看到了這行字符。顯然,printf函數的作用就是將字符串輸出到控制臺上了。

printf由單詞print(打印)和單詞format(格式)的首字母f組成,意為格式化打印。

在早期,計算機的輸出主要是靠連接打印機將字符打印在紙張上。而如今,計算機的輸出大部分都在屏幕上實現。但是print這個詞卻被保留了下來。有時候我們會沿用打印這種說法,而實際上,我們是在屏幕上的控制臺中輸出字符。

printf函數更多用法

int main()

{

int result;

result = add(2, 3);

printf("%d", result);

return 0;

}

讓我們再次比較兩段代碼,我們寫Hello World時只傳了1個參數給printf,但為什麽在add函數後卻能傳2個給它呢?函數定義的參數個數和類型需要和函數調用時候的保持壹致嗎?

printf是壹個很特別的函數,它是壹個變參函數,所以可以接受可變數量和類型的輸入參數。這裏我們無需太過關心怎樣寫壹個可變參數函數,暫時只需要使用它即可。

通過如下示例,我們可以簡單了解printf函數的更多用法。

用於打印壹個整數:printf("%d", 整型);

printf("%d", 12345);

用於打印兩個整數:printf("%d\n%d\n", 整型1, 整型2);

// \n表示換行,就是從下壹行開始再繼續打印

printf("A=%d\nB=%d\n", 123, 456);

我們來總結壹下printf的公式:

printf("XXX占位1 XXX 占位2 XXX占位3", 替換1, 替換2, 替換3);

printf的第壹個參數必須是字符串(被雙引號包括)。其中,占位用%類型表示。例如:整型的占位符為%d。後面的替換參數,會依次替換前面的占位。printf是壹個變長參數函數,只要第壹個字符串參數占位符寫對了,後面可以加任意多的替換參數。

9. #include命令

printf函數並不是我們定義的函數,而是系統自帶的函數。這個函數被寫在文件stdio.h中,我們要使用printf就必須先讓編譯器理解printf。

我們假定printf的函數定義寫在文件stdio.h中,用#include命令,可以將文件stdio.h的代碼復制到我們的代碼中。

TIPS:stdio.h裏面並未定義printf函數,但是它裏面有printf函數的函數聲明。但是,在當前階段裏面,妳可以理解為stdio.h裏面,寫了printf的函數定義。

  • 上一篇:少兒編程將決定孩子未來,是真的嗎?
  • 下一篇:東莞寮步香市小學2011新莞人錄取通知什麽時候下來啊
  • copyright 2024編程學習大全網