C語言部分知識總結
目前已初步學習C語言前五章,以下是對知識點的概括以及個人的理解。
基礎知識:
-
1. 一個C語言源程式可以由一個或多個原始檔組成。
-
2. 每個原始檔可由一個或多個函式組成。
-
3. 一個源程式不論由多少個檔案組成,都有一個且只能有一個main函式,即主函式。
-
4. 源程式中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在原始檔或源程式的最前面。
-
5. 每一個說明,每一個語句都必須以分號結尾(for,if,while,switch等語句後不能加分號)。但預處理命令,函 數頭和花括號“}”之後不能加分號。
-
6. 識別符號,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
-
7. 為了規範,便於理解,修改,在書寫程式時應遵循以下規則:
(1)一個說明或一個語句佔一行。 (2)用{} 括起來的部分,通常表示了程式的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔 一行。 (3)低一層次的語句或說明可比高一層次的語句或說明縮排若干格後書寫。以便看起來更加清晰,增加程式的 可讀性。
-
8、 讀程式都要從main()入口, 然後從最上面順序往下讀(碰到迴圈做迴圈,碰到選擇做選擇),有且只有一個main函 數。
-
9、 整型一般是4個位元組, 字元型是1個位元組,雙精度一般是8個位元組:
long int x; 表示x是長整型。
unsigned int x; 表示x是無符號整型。
-
10、 強制型別轉換:
一定是 (int)a 不是 int(a),注意型別上一定有括號的。
注意:(int)(a+b) 和(int)a+b 是有區別的,前者是把a+b轉型,後者是把a轉型後再加b。
C語言基本語句
(1)賦值語句是賦值表示式加一個分號組成。i=1; x=a+b;可以直接在定義變數時負值。如:int a = 1; (2)函式呼叫語句是函式呼叫表示式後跟一全分號組成。 printf("hello.world\n"); (3)空語句是隻有一個分號而沒有表示式的語句。 其形式為: ;for語句有時會用到。
-
二、控制語句
-
1、if(條件)else
-
2、for語句
-
3、while語句
-
4、do...while語句
-
5、break語句
-
6、continue語句
-
7、return語句
考察要點:
1、scanf函式:
注意該函式的第二個部分是&a 這樣的地址,不是a;
scanf("%d %d",&a,&b)輸入時有空格,scanf("%d%d",&a,&b)輸入時沒有空格。相較於cin,其讀入資料時速度更快,可讀性 強,而且,cin不能讀入空格,但scanf可以讀入空格。
2、 putchar ,getchar 函式:
putchar,getchar用於字元的輸入和輸出
char a = getchar() 沒有引數,從鍵盤得到你輸入的一個字元給變數a。
putchar(‘y’)把字元y輸出到螢幕中。
3、實現兩個變數x ,y中數值的互換需要用中間變數 t=x;x=y;y=t。
位運算a=a^b;b=b^a;a=a^b;而不能直接用x=y,y=x;
4、定義識別符號有兩種寫法。
例如,定義PI:
(1)#define PI 3.1415926 但不能寫成#define PI 3.1415926;這樣寫是錯誤的。
(2)const double PI = 3.1415926;其分號必須加上,而且,使用const常量時,一定要在定義時賦初值。
5、等號和賦值的區別:“=”是賦值,“= =”是等號。這裡容易出錯
6、邏輯表示式:
表示式的數值只能為1或0,即真或假。共有“&&” “ || ” “!”三種邏輯運算子號。且優先級別為!>&&>|| 。
7、switch語句:
有break 和沒有break是有差別的,沒有break時候,只要有一個case匹配了,剩下的都要執行,有break則是直接跳出 了switch語句。break在C語言中就是分手,一刀兩斷的意思。而且 switch只可以和break一起用,不可以和continue用。
8、for() ; while(); do- while()三種迴圈結構:
for迴圈當中必須是兩個分號,千萬不要忘記。
寫程式的時候一定要注意,迴圈一定要有結束的條件,否則成了死迴圈。
do-while()迴圈後一個while();的分號一定不能夠丟。do-while迴圈是至少執行一次迴圈。
9、 break 和 continue的差別:
break:打破的意思,所以看見break就退出整個一層迴圈。
continue:繼續的意思,但是要結束本次迴圈,就是迴圈體內剩下的語句不再執行,跳到迴圈開
其實,從意思上就可以輕鬆的判斷出它們兩個的差別。
10、 注意:函式不可以巢狀定義。但是可以巢狀呼叫。
11、 實參和形參之間 傳數值,和傳地址的差別:
傳數值的話,形參的變化不會改變實參的變化。
傳地址的話,形參的變化就會有可能改變實參的變化。
12、庫函式:
庫函式是已經寫好了函式,放在倉庫中,我們需要使用的時候可以直接去拿!方便快捷,省時省力。
這是幾個較為常見的庫函式:abs()、 sqrt()、fabs()、pow()、sin()。在我們的學習中,庫函式尤為重要!
13、條件表示式:
表示式1 ?表示式2 :表示式3
其含義是:若表示式1的值非0,則該條件表示式的值是表示式2的值,否則是表示式3的值。
用if語句表示即為:
if (表示式1) 語句1
else if (表示式2) 語句2
else if (表示式3) 語句3
14、邏輯運算子的短路特性:
運算子&&和||都具有短路特性,所謂短路特性,即為若含有邏輯運算子(&&和||)的表示式的值可由先計算的左運算元 的值單獨推匯出來,那麼將不再計算右運算元的值,這意味著表示式中的某些運算元可能不會被計算。
例如:在邏輯表示式a>1 && b++>2中,當a>1成立時,後面的b++>2才會被計算,否則,就不能被計算。
個人見解:
通過這一段時間的學習,讓我對C語言有了更深刻的瞭解。但是也逐步明白細節,嚴謹的重要性。從提出問題到尋找思路再到解決問題,看似簡單的過程中充滿著種種困難,一個解決方案的提出到成功也是非常困難。在我看來,解決問題的關鍵在於思路,一個程式的關鍵在於演算法,而思路和演算法正是這個過程中最為困難的部分。
掌握迴圈結構的用法可以讓問題的解決事半功倍,從一個簡單的for迴圈到多個for迴圈巢狀,把一個問題簡單化,而且可以從多個角度思考解決問題,在不斷的探索中提高自己的思維能力。此外,在不斷解決問題的過程中,通過應用,對比,可以更好的瞭解不同的條件語句的侷限性和適用範圍。
希望在以後的學習中,能更深刻的理解程式,更好的將它應用並付諸實踐。