c語言基礎內容——一些基礎內容(完節)

zw1996發表於2016-11-30

帶個徒弟過國二,所以就乾脆打成部落格形式吧;
自己也可以回顧,加深一下學習,為學嵌入式打好基礎;
考國二的可以看下,大神也可以指點一些,畢竟本人還是很菜的;
會直續更新的;
廢話不多說,直接進入主題;

1;計算語言的發展;
計算機語言的種類非常的多,總的來說可以分成機器語言,組合語言,高階語言三大類。然而這種相對的高階和低階,相對人的使用而言,機器語言就是01組成這更方便計算機的使用,而不方便與人,而高階語言就更適合於人的使用;
因此有這樣一句話,語言的發展都是朝著更方便人使用的方向進化的;

2;c語言的執行機制;
這裡寫圖片描述
一個現代編譯器的主要工作流程:
原始碼 (source code) → 前處理器 (preprocessor) → 編譯器 (compiler) → 目的碼 (object code) → 連結器(Linker) → 可執行程式 (executables)
——原始碼:簡單的說就是你所編寫的程式碼
——前處理器:前處理器是在真正的編譯開始之前由編譯器呼叫的獨立程式。前處理器可以刪除註釋、包含其他檔案等功能。
——編譯器:簡單講,編譯器就是將“一種語言(通常為高階語言)”翻譯為“另一種語言(通常為低階語言)”的程式;在C語言裡面就是將C語言翻譯成機器語言。
——目的碼:一般指編譯後的程式碼,它一般由機器程式碼或接近於機器語言的程式碼組成。
——連結器:將目標檔案外加庫連結為一個可執行檔案。
一般在windows上用Devc生成的可以執行檔案是已exe作為字尾的可執行檔案

3;介紹一下編譯器吧;
vc++6.0;國二是是這個
連結:http://jingyan.baidu.com/article/7908e85c93633aaf481ad2c6.html
到最後編寫完程式碼之後;進行編譯連結執行的步驟;
這裡寫圖片描述
我們現在暫時常用的是devc吧?
這裡寫圖片描述

4;打程式碼的時候需要注意;
注:打程式碼的時候記得要把輸入法切換到預設輸入法,純英文輸入法。不然書寫程式碼的時候很容易出現錯誤,中文的標點符號和英文的標點符號是不一樣的。
注:每一行程式碼結束需要分號結束;

5;介紹一個簡單的入門程式碼;學會了那也就可以說自己會敲程式碼了吧。嘻嘻;開玩笑,只能說明你入坑了,程式設計師這個大坑;
這裡寫圖片描述
介紹;
標頭檔案;

什麼叫做標頭檔案:比較官方的話語是這麼說的“標頭檔案作為一種包含功能函式、資料介面宣告的載體檔案,主要用於儲存程式的宣告,而定義檔案用於儲存程式的實現 ”;
//可以理解為“把標頭檔案當作一個工具箱,裡面有很多工具,如果我們用到了這個工具,那麼就需要把這個工具箱拿過來”。
例如上面那個程式碼裡面的#include<stdio.h>;
為什麼要宣告這個標頭檔案,就是因為下面使用了printfscanf函式,這個函式(工具)在這個標頭檔案裡面(工具箱裡面),因此要用到函式工具則要宣告這個標頭檔案;

main函式;

任何c語言程式只能有一個main函式,main函式是整個程式的入口,稱之為主函式,
程式從main函式開始執行,到main函式最後就結束程式;

定義一個變數;

變數的定義語法如下:
資料型別 變數名 = 值;//或者先不賦值;
int d;定義一個int型別變數d

printf();輸出函式;

輸出括號你們引號裡面的全部容;
注意如果存在%d類似的,這些叫做佔位符,先佔一個位置,然後把後面的資料列表的值放進來;
printf("c語言歡迎你%d\n",d);//%d就是佔位符;,後面的就是資料列表,依次放到佔位符的位置,即可;

scanf();輸入函式;

一樣由兩部分構成;
要在鍵盤上輸入引號裡面的全部內容;
如果是佔位符就要輸入一個這佔位符表示型別的值;
後面就是要接一個地址;將前面輸入的值放到這個地址裡面去,相當於賦值了;
&這個符號就是取地址符;取d的位置,將%d接收的值放到這個位置裡面,達到將這個值賦值給d;

6;基本資料型別;
前面那個int型別就是基本資料型別,%d就是表示int這個基本資料型別的佔位符;
這裡寫圖片描述
注意國二其位元組大小;是以這個表為主
這裡寫圖片描述
其佔位符;記得幾個常用資料型別的佔位符;也叫格式化字元
int——%d;
long——%ld;
char——%c;
float——%f;
double——%lf;
8進位制整數——%o;
16進位制整數——%x;
來個程式測試一下吧;注意位元組大小與計算機的位數有關係,但是國二里面位元組是一定的以上圖為準;是16位;
這裡寫圖片描述

注意sizeof()
sizeof操作運算子;計算這種變數,資料型別的大小的;
可以直接接資料型別名字;可以接變數;
並且在接變數的時候可以將括號省略,因為它是操作符;

7;標誌符;
系統自定義識別符號;
——關鍵字;也就保留字
這裡寫圖片描述
——預定義標誌符;
一些標準函式;例如sqrt,printf等
編譯預處理命令;例如;define ,include等
使用者定義識別符號也就是取名字;
規則;
1,要以字母或下劃線開頭,有字母下劃線,數字組成;
2,不能採用關鍵詞命名;
3;預定義的識別符號,只是不建議使用,但可以用;
4;區分大小寫的;
5;有長度規定的;許多系統都是擷取8個;
“常作為國二選擇題;選出合法的使用者標誌符;”

8;常量和變數;
8.1;整數;
在c語言中可以使用十進位制,八進位制。16進位制等幾種形式;
8進位制,以數字0開始;011相當於10進位制的73;
16進位制,以0x或者0X開頭並且還有a到f或者大寫字母;0X16等於十進位制32;
其進位制轉化可以看我另外的部落格;那裡詳細介紹了;
注意;在c語言中要表示長整形數需要在整形數後加l或者大寫L;043L;

8.2;實數,也就是我們所說的小數,他只能由10進製表示不能用其他進位制轉化了;
實數一般用小數形式或者指數形式表示;(國二常考)
小數;由數字0到9和小數點組成(注意必須要有小數;)
0.3 .23 23. 都是合法的的實數;
指數形式;由整數部分,小數點和小數部分,和指數部分,並且指數部分是在E和e後跟整數介碼;
0.0314就是3.14E-2;

注意;
字母E或e後面必須要接有數字,並且一定是整數;
整數部分和小數部分可以省略但是不能同時省略。
小數點或eE以及整數介碼可以省略,但是不能同時省略;

例如;
123E4;135.6e-7;.123e8;0e0;都是合法的;
e5;3.2e0.5;5e;.e3都是不合法的;
5e;小數點和整數介碼同時省略;
.e3;整數和小數部分同時省略了;

8.3;字元常量;兩種表達方法
1;直接用單引號括起來,’a’;
一個字元常量的值都是由ASC|| 程式碼確定了的;

2;以一個反斜槓“\”開頭的字元序列,成為轉義字元;
這裡寫圖片描述
‘\101’表示ASC||為十進位制65的字元‘A’;
來個有趣的;還記得也做過這個選擇題;
這裡寫圖片描述
大小寫字母轉換的程式;
這裡寫圖片描述

3;字串常量;(這個比較容易忘記,字串也可以有常量)
字串常量由一對雙引號括起來的字元序列;
“abc”,“123”都是合法的;
補充;
字串長度就是字元的個數;
字串的大小就是字元的個數加上最後一個結束符‘\0’;
這裡寫圖片描述

符號常量;define修飾;
當一個字元常量被多次使用時,為提高他的靈活性,我們就用一個符號來表示他;這個符號就叫做符號常量;
定義格式;#define 識別符號 常量;(注意這個要在main函式之前定義,屬於預編譯;
其實還有一個修飾變數不可變的關鍵詞,const;
詳情可以看#define與const
http://blog.csdn.net/zw1996/article/details/52833761

8.4;變數;
介紹;一個變數就要有其名字,系統可以通過變數名來訪問變數,並且變數在程式中使用前必須定義,也就是指定變數名稱和資料型別,以便編譯系統為它分配相應的儲存單元;ps;要進行初始化;等下證明他不會進行預設初始化的;

變數的定義;

資料型別符  變數名列表;多個變數用逗號隔開;
int a, b;//定義兩個int變數a,b;

進行變數賦值;

變數名 = 表示式;
a = 10;//就是將10賦值給a;
//注意這裡是=而不是==,注意區分,在C語言中==是判斷是否等於,=代表賦值;
當定義一個變數但是又沒有給他賦值的時候,系統會分配一個不確定的值給他,那麼其就沒什麼意義了;
等下程式碼證明;
如果變數型別和所賦值型別不一致的時候,所賦資料將被轉換成與變數相同的型別;
int x = 10.111;直接就是x=10

這裡寫圖片描述

8.5;資料型別的自動轉換和強制轉換;
可以看我之前的部落格;
連結;http://blog.csdn.net/zw1996/article/details/52806181

9;基本運算子與表示式;

9.1;算術運算子和算術表示式;
加減乘除取摸;
這裡寫圖片描述
自增自少;
c語言中有兩個特殊的算術運算子:自增運算子++,自減運算子- -。它們都是單目運算子,而已運算物件必須是變數;
自增,自減,的結合方向是自右至左,他們是使運算物件的值加1減1;
這裡寫圖片描述
算術表示式;
表示式,x*y%c-0.9+‘A’;這些;
注意;進行算術運算的時候,應該注意;(國二選擇題)
1;注意算術符的優先順序;
2;優先順序相同是,應該按照運算子的結合方向出來;
可以看下之前我部落格的前面關於優先順序的部分;
連結;http://blog.csdn.net/zw1996/article/details/51253336

9.2;賦值運算子和賦值表示式;
這裡寫圖片描述
賦值表示式;
是由賦值運算子“=”將一個變數和表示式連線起來的式子;
格式;變數 = 表示式;
注意;(常做考題)
賦值運算子的左邊必須是變數;
當賦值表示式中左邊變數與右邊表示式的資料型別不同時,則需要進行型別轉化;
規則為;
右邊的表達的值轉化為左邊變數的資料型別,然後再賦值給變數;

9.3;關係運算子和關係表示式;
這裡寫圖片描述
注意,關係表示式的運算結果只有兩種;真或假;非0為真,0為假;
特別注意運算子的優先順序;

低於算術運算子但是高於賦值運算子;結合性都是自左向右;

9.4;邏輯運算子和邏輯表示式;
這裡寫圖片描述
注意其短路原則;(常考)

1a&&b&&c;
如果a為假則不再執行任何操作,直接返回0;意思就是b,c不進行操作;這就是短路;因為a0,那麼這個式子一定為0了,結果已經確定了bc是否執行沒有什麼關係了;
如果a1;則要執行b,如果b等於0,那麼c就不需要執行了;一樣的道理,
2a||b||c;如果a為真那麼不再執行任何操作,直接返回1;意思就是b,c不進行操作;這就是短路;因為a為1,那麼這個式子一定為1了,結果已經確定了bc是否執行沒有什麼關係了;
如果a0;則要執行b,如果b等於1,那麼c就不需要執行了;一樣的道理,
3a&&b||c;或者a||b&&c;因為邏輯與的優先順序大於邏輯或,因此可以將其看做2型別;
總結;
對於&&,只有左邊運算物件不為0,才繼續進行右邊的運算;
對於||,只有左邊的運算物件為0,才繼續進行左邊的運算;

注意;邏輯與&&的優先順序高於邏輯或;結合性為從左到右;
a&&b||c就是    (a&&b)||a;   從||兩邊加括號;(技巧)

9.5;條件運算子;
a?b:c;唯一的運算子;
等效於;
if(a){
b;
}
else{
c;
}
這裡寫圖片描述
9.6;逗號運算子;
在c語言中,逗號“,”是一種特殊的運算子,用於將若干個表示式連線起來;
格式;
表示式1,表示式2,表示式3;
其運算規則;
先計算表示式1,再計算表示式2,最後計算表示3;最後一個表示式的值就是逗號運算子的值;
這裡寫圖片描述
9.7;基本位運算,
之前寫過部落格,
連結為;http://blog.csdn.net/zw1996/article/details/52621984

10;輸入輸出基本函式介紹;
10.1;介紹單個字元的輸入輸出;
c = getchar();單個字元的輸入;接收一個字元並賦值為c;
putchar(c);單個字元的輸出;輸出字元變數c
這裡寫圖片描述

注意使用getchar();接收的時候,鍵盤敲入的;空格,換行,等都會作為字元被其接收;以後這點要特別注意;

10.2;格式輸入輸出;
scanf,printf可以對任意型別的多個資料按照指定格式進行輸入輸出操作;
這節單獨拿出來吧;覺得是個比較容易忘的;並且有點麻煩的;下次補上鍊接;

累死;這篇部落格打得也是夠久的了;終於碼完了,但是感覺好多不足的;下次有新知識在補上;感覺還是不怎麼熟悉,並且這知識點順序沒怎麼邏輯一下,基本上是按照自己的書來一樣,只是自己碼上了圖而已;越這樣就越佩服出書的人了,我的個天啊,以後無論看什麼書,都應該抱著尊敬的態度去學習,每本書都包含了作者無數的心血;
我感覺我自己打部落格一樣,感覺自己真的很很花心思的。
有時候在想,如果自己打的部落格丟失了,真不敢相信,我會是怎樣的心情,千萬不要這樣啊;;越想越嚇人;
休息一回,等哈還要打一篇java部落格;;;;
感覺發表部落格的那刻是最開心的,從心裡的高興;
看到瀏覽量變多,也十分高興,這是自己的付出勞動滿足了自己一點點虛榮心;

期待自己的水平越變越高,畢竟對自己未來的期望很高哈;
軟硬體都要會,我也是醉了;沒辦法,那麼大學只能少浪一點點哈,,,

相關文章