C語言知識點梳理 1

2021-08-11 13:09:46 字數 3573 閱讀 7025

#include

int main(),這是主函式。當程式執行時main函式是起始函式,程式的起點。int為函式的返回值型別,括號中的內容為函式的引數,這裡主函式沒有引數,所以括號中沒有內容,在自定義函式中如果需要引數則需要在括號中依次定義引數的型別和引數名(如:int pow_int(int a,int b){})。緊跟的{}中的內容為函式體,也是這個函式的塊或者域,這是函式的主體,函式的過程都在函式體中實現。乙個大括號中的內容表示乙個域,在域中定義的自動變數只在本域中生效,當程式程序結束了這個域,這個域中定義的所有自動變數在記憶體中的空間都將或被釋放。

printf(「你好,c語言!\n」);這是乙個輸出語句,printf()是乙個包含於stdio.h標頭檔案中的函式,它實現在控制台視窗中按規定格式列印一些內容,\n在printf中表示換行,而不是列印」\n」,如果確實需要列印」\n」應該寫成printf(「你好,c語言!\\n」);。每一條語句需要用」;」結尾,表示這條語句的結束。

return 0;這是函式的返回值,表示當函式執行完後返回0。返回值型別在函式名前定義,如:int main(){}中的int便是main函式的返回值型別,當函式執行完成則需要返回乙個int型的值。

變數是程式執行的基石,在c語言中變數的基本型別包括字元型、整形、單精度浮點型、雙精度浮點型、指標以及各基本型別對應的陣列型別和復合資料型別的結構體還有空型別。基本資料型別如下:

記憶體單位及進製:

1eb=1024tb,1tb=1024gb,1gb=1024mb,1mb=1024kb,1kb=1024b,1b=8bps

每乙個bps存放乙個二進位製碼(即0或1)

在編寫程式的過程中,用變數型別+變數名進行定義,如定義乙個變數名為a的整形變數(int a;),在定義時可以完成變數的初始化(int a=0;)。需要注意的是在宣告指標型別變數時是不允許將常量或變數值直接賦值給指標變數的,而是需要使用&符號取當前已有變數或常量的位址,因為陣列名等價於陣列首元素的位址所以當給指標變數賦陣列(結構體可以看做一種包含多個資料型別的陣列)首位址是不用&符號。當給浮點型資料賦值整形數值時計算機可以自動轉換而不會造成數值的失真,而如果將乙個浮點型的資料賦值給整形變數則計算機會進行強制型別轉換,浮點型數值的小數字將會被直接捨棄!

例如:int a=5/4;

printf(「a的值為:%d\n」,a);

則會顯示:「a的值為:1」而不是1.25。

二進位製碼的計算(1位元組內):

乙個位元組包含8個2進製空間(bps)可以表示-128到127之間的數值。其中第一位為符號位,符號位為1則表示這是乙個負數,為0則表示為正,後7位則這這個數的2進製絕對值。如:00001001表示+7;10001000表示-6;特殊的10000000表示-128(而不是-0)。

受計算機物理構造限制以及最大限度優化設計,運算器只能進行2進製加法運算,所以在計算機內部對2進製碼還有反碼和補碼的處理過程。對於正數而言,它的反碼和補碼就是它本身,負數的反碼為其符號位不變其餘各位取反,負數的補碼為在其反碼的基礎上加1。

算數運算子:+、-、*、/、()、%、++、--

關係運算子:==、>=、<=、>、

邏輯運算子:或||、且&&、非!

賦值運算子:=

優先順序:一般順序為算數運算子》關係運算子》邏輯運算子》賦值運算子,優先順序最高的是! () sizeof() ++ -- 然後邏輯運算子中&&的優先順序高於||

需要注意的是在算數運算子中的++和--,如果後置則是在整個表示式計算結束後再自加1或自減1,如果運算子前置則需要先自加1或自減1後再執行表示式。

例如(部分函式其它部分省略)

int  num1=9;

int  num2=10;

int sum_num=0;

sum_num=++num1+(++num1)-(num2--)-(--num2);

printf(「++num1+(++num1)-(num2--)-(--num2)的結果為:%d\n」,sum_num);

最後列印結果為「++num1+(++num1)-(num2--)-(--num2)的結果為:4」

計算步驟:

找出前置++或—的位置,並計算:

++num1;

++num1;

--num2;

執行後num1=11,num2=9,然後執行算式:num1+num1-num2-num2

=11+11-9-9

=4然後將4賦值給sum_num,之後再計算後置的++和--:

num2--;

執行後num2=8;

特殊的:

int  num1=9;

num1=num1++;//執行後num1的值為9。

int  num1=9;

num1=++num1;//執行後num1的值為10。

自己給自己賦值會在內存在開闢出乙個同名的變數,當前置++時會將num1拷貝乙份然後將備份自加1然後再將已經備份的值複製回來,然後備份被釋放。當後置++時也會將num1拷貝乙份然後將備份自加1,但是因為賦值運算已經運算完成了,備份(同名變數)的10將不會被賦值回來,然後備份被釋放,num1的值不變。

在c語言中選擇語句包括if語句和switch語句,if語句用於條件判斷適用於區間範圍和點範圍的判斷,switch語句用於點範圍的判斷。語法結構如下:

if(條件判斷)else if(條件判斷) else if…根據情況使用else if 可以無限級聯…

else

if語句是條件判斷語句,如果條件判斷成立則執行,執行完成後不再進行後續的條件判斷,如果條件不成立則跳到下乙個else if 直到判斷條件成立,如果都不成立則執行else後面的內容。if語句可無限巢狀和級聯,除了必要的條件判斷,語句中的else if 和else語句都可以省略,如:if(i>0)到此結束if語句。

switch(對比變數)

switch語句只能用於點對點的條件判斷,功能沒有if語句全面,如果要用switch語句進行範圍判斷則需要將對比變數事先進行對應各個區間的條件賦值(這種方法費力不討好,不建議使用)。

c語言中常用的迴圈結構包括while迴圈、do while迴圈以及for迴圈,while迴圈和do while迴圈用於條件判定迴圈,它們的區別是while迴圈一開始便需要進行條件判斷,如果判定結果為假則不會執行迴圈體中的**,而do while迴圈的第一次迴圈體語句的執行是不會進行條件判定的,只在第1次迴圈體語句結束後判定,如果條件判定為真則返回迴圈體開頭位置再次執行,否者退出迴圈體,即do while迴圈在執行中至少被執行一次。for迴圈用於明確迴圈次數的迴圈,通常需要定義乙個控制迴圈次數的變數。它們的結構如下:

while(條件判斷)//每次迴圈體執行完畢跳回while迴圈開頭,再次執行條件判斷,如果判定為真則再次執行迴圈體,否則退出迴圈體

dowhile(條件判斷);//每次迴圈結束後進行條件判斷,如果判定為真則再次執行迴圈體否則退出迴圈

for(控制變數賦值;條件判斷;每次結束後執行)//迴圈體執行完成跳到for迴圈開頭,先執行括號中最後乙個分號後的語句,然後條件判斷

控制變數的賦值及初始化只在進入函式體後被執行1次,之後不再執行。for迴圈語句中括號內的3個語句都可省略(可在函式體內部用if語句設定條件判斷和退出迴圈的操作)但兩個分號不可省略。

c語言常用知識點梳理

c語言常用知識點 知識點1 交換兩個變數值的方法 如下 b a b a a b b a b 採用按位異或的位方式 如下 a a b b a b a a b 知識點2 p 3 與 p 3 的區別 因為的優先順序高於 所以結合順序不一樣,所表示的含義也不一樣。知識點3 sizeof的使用 知識點4 in...

C語言知識點梳理感悟

c語言知識點梳理感悟 一,知識點梳理 1.預處理 1 預處理指令 2 開頭的指令都被稱為預處理指令 3 預處理的作用 4 檢視預處理後的結果 5 include 裡加庫函式 2.資料 1 常量 2 巨集,巨集定義,巨集的使用,巨集的缺陷 3 變數,變數的型別,變數的賦值,變數的初始化,乙個 是賦值。...

c語言知識點 1

1.參與運算的資料是什麼型別,結果也是什麼型別,並且參與運算資料必須是同一型別,會進行自動型別轉換 double d 10 3 3.00000,還有自動型別提公升 2.int size sizeof char 僅這種情況括號不能去掉 3.c語言中,條件成立為真,不成立為假,任何數值都有真假性,只有0...