讀書筆記《c語言深入剖析》

2021-06-22 01:44:09 字數 3673 閱讀 5478

第一章:關鍵字

1.1、register

@@register 變數可能不存放與記憶體中,因此,不能使用「&」來對訪問變數的位址。

1.2、static

@@靜態全域性變數:作用域僅限於所定義的檔案中,其他檔案使用extern關鍵字也無法訪問;

@@靜態區域性變數:函式體內定義的static變數,儲存於靜態儲存區,只能在此函式體中進行使用,其他函式不能訪問(函式宣告static變數後,該函式將不可重入。)

@@靜態函式:此函式外部檔案不能進行訪問,可起到保護作用。

1.3、基本資料型別:

@@long 和int的區別:

《c和指標》中寫過:

long與int:標準只規定long不小於int的長度,int不小於short的長度。(我記的好像是這樣)

16位系統:long是4位元組,int是2位元組

32位系統:long是4位元組,int是4位元組

64位系統:long是8位元組,int是4位元組

@@區域性變數中採用通用的命名方式,僅限於n、j、i等作為迴圈變數使用;

@@定義變數的同時一定要進行初始化;

1.4 sizeof

@@sizeof 並非是乙個函式,是乙個關鍵字

int k;

sizeof(int)  //括號必須

sizeof k;//括號非必須

1.5 if else

@@ bool 變數判斷

使用if(btag),if(!btag)進行bool變數判斷

@@float變數判斷

float變數是帶有精度的小數,因此要引入精度進行條件判斷

if(fnum>=epsinon)...

@@指標非空判斷

if(null==p)

@@attention:

if條件判斷,先進行正常情況判斷,再進行異常情況判斷(正常情況發生的概率更大,避免無謂的低效判斷)。

1.6 switch

@@case後的值的要求???

@@attention:、

case語句盡量簡短,如果條件執行的太長,要單獨寫乙個函式進行功能模組化。

@@continue ,break

continue終止「本輪」迴圈,break終止「本層」迴圈

eg. 

for(int i=0;i

for(int j=0;j

continue; .//when j=8,so teminate, and transfer to j=9

break;// when i=1,j=8,so terminate ,and transfer to i=2;j=0;

1.7 do,while ,for

@@不能在迴圈中修改迴圈變數i,防止失控

1.8 void

@@凡是不加返回型別的函式,預設為int型

add(int a,int b)//return int

@@void 指標不能進行算術運算,也不能進行自加減

@@return 不能返回堆疊內的臨時區域性變數

function(void *pointer)

1.10 const

@@const 關鍵字可理解為readonly變數,不是常量,其值在編譯時不能使用,其在編譯時編譯器不知道其儲存的內容。

//其他變數在編譯時會讀取儲存的內容麼?

在.c檔案中:

const int max=100;

int array[max];//報錯,說明max仍為乙個變數

@@const變數在編譯期

間不進行記憶體分配,只儲存在符號列表中,因此,沒有了記憶體讀寫的操作,可提高編譯效率

const只進行一次記憶體分配,儲存在靜態儲存區,而define在預編譯階段進行替換,有若干個記憶體中的拷貝。

1.11 volatile

@@volatile應用於避免編譯器的預設優化而造成的資料實時性變更丟失。即保證每次都重新讀取volatile變數的值,實時進行更新。

@@questions:

const volatile int i=0; //i 是什麼型別

1.12 struct

@@空結構體大小為1位元組

@@柔性陣列(c99支援)

typedef struct st

st1;

//st1 為柔性陣列,sizeof(st1)=4,

//使用柔性陣列時必須保證可變陣列前定義

//乙個其他成員,當使用變長陣列時,要臨

//時通過malloc函式為陣列分配記憶體,分

//配記憶體後,sizeof(st1)=4,保持不變。

《c語言深度剖析》讀書筆記(二)符號

本文是自己讀書的時候一些關於該書的重點及感悟 目錄 1 注釋符號 2 接續符和轉義符 3 單引號和雙引號 4 邏輯運算子 5 位運算子 6 花括號 7 操作符 8 c語言除法 9 符號優先順序 1 c 語言裡可以有兩種注釋方式 和 編譯器在編譯程式時的確會將注釋剔除,但不是簡單的剔除,而是用空格代替...

《c語言深度剖析》讀書筆記(六)函式

本文是自己讀書的時候一些關於該書的重點及感悟 目錄 1 函式的好處 2 編碼風格 3 函式設計的一般原則和技巧 4 遞迴 1 降低複雜性 2 避免 重複 3 限制改動帶來的影響 4 隱含順序 5 改進效能 6 進行集中控制 7 隱含資料結構 8 隱含指標操作 9 隱藏全域性變數 1 每乙個函式都必須...

C語言讀書筆記

1.c語言中一共有32個關鍵字 分別是 auto int double long char short float unsigned signed sizeof extern static goto if else struct typedef union enum switch case brea...