C語言學習筆記01
C語言基礎學習筆記:
1:對於面向底層的語言更加強調型別,越是物件導向的語言越是弱化型別;
2:C語言的型別分類
整數:
char \short\ int\ long\ long long
浮點數:
float \double \long double
邏輯:
bool
指針
自定義
型別的不同會導致輸入輸出的格式變化
int\long\double
輸入輸出的格式變化;%d%ld%lf(輸出浮點數)
所表達數的範圍:
char<short<int<float<double
記憶體中所佔據的位元組大小:1位元組到16位元組不等
記憶體中的表達方式:二進制數(二補數)、編碼
sizeof:一個運算子,給出某個型別或者變數在記憶體中所佔據的位元組數
sizeof(int);
sizeof(i);
sizeof是一個靜態運算子,其結果在編譯時刻就決定了,所以在其(括號)裏面的任何運算都沒有意義
int所要表達的是一個暫存器的大小,通常意義上是指,CPU的字長,在不同的cpu上int的大小也是不一樣的
對於二進制數的二補數形式表達:
左邊第一位一般表示符號:11111111表示的就是-1(二補數的概念)
如果不想使用二補數,可以使用關鍵字unsigned,這就意味着這個整數不以二補數的形式表達,這個關鍵字並不是爲了擴大數的範圍,主要是爲了移位
整數的輸入輸出:
%d-int
%u-unsigned
%ld-long long
%lu-unsigned long long
對於八進制和十六進制
一個數前面是0開頭則表示八進制,是0x開頭則表示十六進制,輸出的時候八進制用%o,十六進制用%x;
關於浮點型別:
float:字長32位元
double: 字長64位元(輸出也可以是科學計數法,%e)
在%和f之家可以加上小數點.n來表示需要輸出幾位小數,%.3f,就表示需要輸出三位小數
char是一種字元變數,可以通過加單引號‘’的形式來表示一種字元
字元‘1’對應的數位是49
scanf不支援自動字元型別轉換
bool支援邏輯運算,bool b=7>5;
C語言中的邏輯運算
&&與
||或
! 三大邏輯運算
C語言中的函數:
函數可以避免程式碼複製的現象,程式碼如果重複的地方過多則不便於維護,而函數可以解決這一問題, void(返回型別) sum(函數名稱)(int begin,int end)(參數表)
{}
printf()
如果使用的是void則表示這個函數不返回值,但是
可以進行printf的操作,呼叫則可以列印
呼叫函數的規則:函數名(參數值);
()起到了表示函數呼叫的重要作用,所以即使沒有傳參,也需要加上()這個圓括號
int max(int a,int b)
{
return c
}(從函數中返回值可以賦值給變數,也可以再傳遞給函數,甚至可以丟棄)
對於void 函數名(參數表)
1:不能使用呆值的return,也可以沒有return;
2:呼叫的時候不能做返回值的賦值;
函數的先後 先後關係
1:void sum(參數表)這樣的函數應該寫在主函數的上面;
2:C的編譯器是自上而下順序分析程式碼的;
3:函數的頭部至少應該放到主函數的上方並加分號(宣告);
關乎呼叫函數時的傳參;
1:C語言在呼叫函數的時候永遠只能傳值給函數;
2:每個函數有自己的變數空間,參數也位於這個獨立的空間中,和其他函數沒有關係;
函數的變數:
1:函數的每一次執行就會產生一個獨立的變數空間,在這個空間中的變數被稱作本地變數,
2:定義在函數內部的變數就是本地變數,而參數也是一種本地變數;
變數的生存期和作用域:
1:生存期:從變數的出現到消亡的這一段時期;
2:作用域:變數可供存取的範圍;
3:對於本地變數,只有在大括號(塊)內才具有生存期和作用域;
4:本地變數是定義在塊內的,可以定義在函數的塊內,語句的塊內,或者任意一個大括號的塊內;
5:程式執行進入某個塊之前,這個塊是不存在的,而程式執行離開這個塊,裏面的變數也就消失了;
6:塊外面定義的變數到了塊內仍然有效,如果內外定義了同一個變數,外部變數會被內部變數掩蓋;
7:本地變數不會被預設初始化;