一、資料型別– 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...