c語言筆記

2022-03-08 18:20:44 字數 1893 閱讀 7082

1.在c語言中,不同資料型別在進行運算時首先要轉換成同一型別,一種是自動轉換,二是強制轉換。short、int、long、char、float、double這六個關鍵字代表c 語言裡的六種基本資料型別。轉換方向:char,short->int->unsigned->long,float->double。強制轉換如下:

整型別:short int/char/列舉型別/位域型別都可轉換成int,如果超出int表示範圍,則提公升到unsigned int。

2.指標有兩個屬性:指向變數/物件的位址和長度,但是指標只儲存位址,長度則取決於指標的型別;編譯器根據指標的型別從指標指向的位址向後定址,指標型別不同則定址範圍也不同。

3.& 運算子的位址可以應用於變數而不是具體的數字。不能把乙個具體的數字賦給指標(型別不匹配)。

4.在進行某些演算法的c語言程式設計的時候,需要使幾種不同型別的變數存放到同一段記憶體單元中。也就是使用覆蓋技術,幾個變數互相覆蓋。這種幾個不同的變數共同占用一段記憶體的結構,在c語言中,被稱作「共用體」型別結構,簡稱共用體。

5.volatile是乙個特徵修飾符(type specifier).volatile的作用是作為指令關鍵字,確保本條指令不會因編譯器的優化而省略,且要求每次直接讀值。volatile的變數是說這變數可能會被意想不到地改變,這樣,編譯器就不會去假設這個變數的值了。

6.long/short和unsigned/signed型別修飾符:long型別不能比變通型別短,short型別不能比普通型別長。而unsigned與signed的區別在實現上是有無符號的區別,而是使用上是取值範圍的區別,兩者表示範圍相同,但前者全是正數,後者關於0對稱。

7.c語言裡typedef的解釋是用來宣告新的型別名來代替已有的類姓名。typedef為c語言的關鍵字,作用是為一種資料型別定義乙個新名字。這裡的資料型別包括內部資料型別(int,char等)和自定義的資料型別(struct等)。

8.系統程式設計使用**函式的時候,經常需要把乙個值存在 void * 中傳給**函式,然後在**函式內部把 int 值從 void * 中取出。void即「無型別」,void *則為「無型別指標」,可以指向任何資料型別。

把乙個 int 存到 void * 變數需要先把它轉換成 long, 這樣能避免 warning: cast to pointer from

integer of different size

intnum;

void *arg;

arg = (void *)(long

)num;

同樣,從

void * 取出 int

, 需要這樣:

int fd = (int) (long)arg;

9.extern表示是外部函式或外部變數,比如:

一般都把一些經常用到的列舉和變數之類的寫在.h標頭檔案中。這樣要引用時直接include "頭檔名"就可以了呼叫裡面所有的列舉和變數了。在大型專案中,引用別的.c檔案中的函式則只能用extern,因為.c檔案是不能 include的。所以想引用別的.c檔案中的函式和全域性變數、列舉等等的就只能用extern。

10.strlen()和sizeof()比較:

11.在用%.*s時,後面跟著兩個引數,如下 a表示輸出資料占得位置的大小,sval 表示要輸出的內容

printf("

%.*s

" ,a , sval); /*

意思是輸出字串sval,但至少佔a個位置,如果用%*s在字串sval左邊補空格

12.字元陣列是乙個陣列,每個元素的值都可以改變。而字串指標指向的是乙個常量字串,它被存放在程式的靜態資料區,一旦定義就不能改變。陣列能隱式轉換成指標。

C語言筆記(C )

結構體,類在定義時沒分配空間,用其定義變數時才會分配空間,所以c語言在的結構體不用有靜態型別,因為靜態型別在資料段,而如果在函式用用結構體定義變數,這變數在棧中,這樣就衝突了,但在c 中有相應的機制處理些問題。c 的cin.get 不讀取緩衝區中的回車字元,而cin.getline 將緩衝區中的回來...

C語言 C語言複習筆記

為什麼要學c語言?1972年,美國貝爾實驗室的 d.m.ritchie 在b語言的基礎上最終設計出了一種新的語言,他取了bcpl的第二個字母作為這種語言的名字,這就是c語言。總所周知,任何東西的盛行都只是乙個階段,語言也是如此。但是,c語言是個例外,乙個矗立了半個世紀的語言,其中好壞,我想應該不難了...

C語言筆記

1.換行問題導致與預期效果會不一樣 2.與 的錯誤,成功用 0來表示 3.編譯器分解符號按照從左到右分解 利用貪心演算法4.這樣也可以輸出。5.ga 與 ga 區別 ga 編譯器的處理會不一樣,vc 是後乙個覆蓋前乙個,從左向右 6.int p,a p的值為int,a的值為int,所以p為int指標...