C 程式設計思想讀書筆記 C 中的C

2021-05-23 14:35:53 字數 2440 閱讀 1794

一、資料型別– data type:定義使用儲存空間(記憶體)的方式

(1)內部資料型別:編譯器本身能理解的資料型別。標準c的內部型別規範不說明每個內部資料型別必須有多少位,只規定其必須能儲存的最大值和最小值。

使用者定義資料型別:抽象資料型別。

(2)4個基本資料型別:char、int、float、double

(3)說明符:short、long、signed、unsigned

(4)unsigned不儲存符號,因此有乙個多餘位可以用,所以能儲存比signed數大兩倍的整數。

(5)除了char型別,其它內建的資料型別都是signed,可以通過signed char強制使用符號位。

二、指定儲存空間分配

1、全域性變數

(1)在所有函式的函式體外定義,程式所有部分可使用。

(2)在乙個檔案中使用extern關鍵字來宣告另乙個檔案中存在的全域性變數,那麼這個檔案可以使用這個資料。

2、靜態變數

(1)函式內部的區域性變數定義為static時:區域性變數的值在程式整個生命期存在,初始化只在函式第一次呼叫時執行。

(2)static作用於函式名和所有函式外部的變數時:在檔案外部不可以使用這個名字,函式名或變數侷限於檔案,具有檔案作用域。

三、運算子,位運算

1、左值和右值

(1)左值:明確的命名變數,有乙個儲存資料的物理空間

(2)右值:任意常量和能產生值的表示式

2、一些tips

(1)若列印乙個bool值,一般會看到1表示true,0表示false

(2)異或(xor)」^」:兩輸入位之一是1,而不同時為1,則是1.(相同為

0,不同為1)

(3)如果移位運算後面的值比運算子左邊的運算元位大,則結果不定

(4)&&是邏輯運算子,&是位運算子

(5)逗號運算子可以用於分隔表示式,但只產生最後乙個表示式的值。

四、常量、預處理器巨集

1、常量

(1)在舊版本的c中,使用預處理器

#define pi 3.1415926

缺點是不能進行型別檢查;不能得到位址(不能傳遞指標和引用);不能識別作用域。

(2)c++中,使用命名常量

const int size = 100; //必須初始化

另:const – 這是不會變的;

volatile – 不知道什麼時候就變了

2、預處理器巨集

(1)#define print(str, var) /

cout << str 「=」 << var << endl

使用時,print(「v+w」, u);

跟在巨集名後面的括號中的引數會被閉括號後面的所有**替代。在呼叫巨集的地方刪除名字,並替換**。所以使用巨集時,編譯器不會報告任何錯誤資訊,並不進行型別檢查。

(2)#define p(ex) cout << #ex << 「:」 << ex << endl

#ex為字串化的預處理特徵,可獲得任一表示式並把它轉換成乙個字元陣列。比如:p(a)將產生**cout << 「a:」 << a << endl

(3)關於assert()巨集

#include

assert(expression);  //若表示式為假,則程式終止

若在include之前插入語句行插入#define ndebug則可清除由assert()巨集產生的**。

(4)typedef命名別名

typeof 原型別名 別名;

eg: typedef unsigned long ulong;

與預處理器的不同之處:編譯器知道將名字做型別處理。

五、有關sizeof

sizeof提供給我們有關資料專案所分配的記憶體的大小,告訴我們任何變數使用的位元組數,也告訴我們資料型別的大小。有關sizeof的東東可見這篇部落格《深入理解

sizeof》。

六、陣列的識別符號

陣列的識別符號不像一般變數的識別符號:

(1)陣列的識別符號不是左值,不能給它賦值,他只時間進入方括號的語法手段。

(2)給出陣列名沒有方括號時,得到的即是陣列的起始位址。

(3)可以把資料識別符號看成是資料起始位址的唯讀指標。

(4)宣告乙個陣列為函式引數,實際上宣告的是乙個指標。給函式傳遞陣列時,實際上是傳遞了起始位址。陣列不會按值傳遞,不會自動得到傳遞給函式的陣列的本地拷貝,修改陣列時,其實是修改外部物件。

C 程式設計思想讀書筆記 9 內聯函式

1 在c語言中使用巨集可以提高程式效率,但巨集容易出錯 在巨集定義中,最好給變數打上括號,否則容易出錯.於處理器 無法對巨集的引數型別和返回值進行簡單 巨集和普通函式是有區別的,普通函式是值傳遞或者位址傳遞,但巨集是簡單地拷貝,特別引數是a 這種容易使a 多次執行 2 在巨集裡,沒法表示類的作用範圍...

《c程式語言》讀書筆記

舉例如下 char a 10 1 定義的時候直接用字串賦值 char a 10 hello 注意 不能先定義再給它賦值,如 char a 10 a 10 hello 這樣是錯誤的!2 對陣列中字元逐個賦值 char a 10 3 利用strcpy char a 10 strcpy a,hello 易...

c 程式設計 讀書筆記 一

2016.12.3 2016.12.4 完成乙個程式的設計工作分三步 寫出乙個好程式,最關鍵的就是去設計這些類 如何用c 寫出優秀的程式 第三章 一些關於string操作 p68 string s 裁剪字串 s.substr a,b a 字串裡乙個下標的位置 b 所需字串長度 替換字串 s.repl...