C語言零碎筆記 溫故而知新

2021-06-20 11:11:10 字數 1699 閱讀 4738

1.逗號表示式的值是最後乙個表示式的值,且逗號運算子優先順序最低

2.字元輸入輸出:putchar(ch);ch=getchar();

3.switch語句格式:

switch(表示式)

switch語句執行方式:找到入口標號後不再判斷,順序執行,因此必要時要加break語句。

4.讀入一行字串的方法:

gets函式

char str[10]; 

gets(str);

注:gets會造成緩衝區溢位,覆蓋其它的正常資料,所以慎用。(用其它方法)

5.函式引數傳遞為值傳遞,陣列名傳遞為首元素位址傳遞,二維陣列則不可省略第二維。

6.變數的儲存類別:動態儲存和靜態儲存。

(1).auto:自動儲存類別,動態分配儲存空間,可以生省略

(2).static:靜態區域性變數,靜態儲存類別,賦初值僅第一次有效,外部程式不能引用

(3).register變數:直接放在暫存器中,(了解,沒有必要使用)

(4).extern宣告外部變數:

1.在乙個檔案內:

在全域性變數定義前使用它,要用extern宣告,起到拓展其作用域的作用,類似函式名宣告。 (沒有必要使用)

用法:extern a;a...;int a;

2.多個檔案的程式中:乙個檔案中定義,其它檔案中用extern宣告,應當慎用。

(5).用static宣告外部變數:靜態外部變數,如static int a,禁止其它檔案引用,避免誤用。

7.內部函式和外部函式

(2).外部函式:extern int func(int a,int b) 表示其它檔案可以呼叫,c語言預設都為外部函式,所以可以省略 extern,呼叫時用extern對函式宣告,extern可以省略。

8.巨集定義

(1).不帶引數的巨集定義 #define 識別符號 字串    編譯是「巨集展開「:將巨集名替換成字串 #undef 種植巨集定義作用域 

(2).帶引數的巨集定義 #define 巨集名(參數列) 字串,形參外面常加括號,保證正確。

9.檔案包含

原理:編譯預處理時,將所包含的檔案複製到主檔案中成為乙個程式一次編譯,不是分別編譯。

10.條件編譯

(1). 

# ifdef 識別符號

程式段1

# else

程式段2

# endif

舉例說明:

# ifdef debug

......

# endif

/*define the way using 64bits interger in different os*/

# ifdef win

#define ll _int64

#define ld "i64d"

# else

#define ll long long

#define ld "lld"

# endif

ll a;

scanf(ld,a);

printf(ld"\n",a);

(2).# ifndef 與上面類似

(3). 

# if 表示式

程式段1

# else

程式段2

# endif

11.指標

溫故而知新

堆排 建立堆,維護堆的屬性 一次拿掉乙個,然後維護屬性,二分的結構 使得維護屬性只要logn的時間 冒泡也是一次拿走乙個 但是線性的結構 每次沒有節省時間 快排 一次確定 乙個值的位置,然後二分,縮小問題的範圍。floyd找最短 一次更新 將狀態改為經過固定點的 最短距離 迴圈 遍歷每個點,則結果為...

溫故而知新 C語言 遞迴

遞迴。是的,差不多就是這種感覺。上面就是類似遞迴的顯示表現。2017 10 24更新 遞迴這個問題放了很久。也沒有寫。大概是自己還沒有好好理解吧。在這裡寫下自己理解的全部。一 何為遞迴。字面意義,分開看。有傳遞。有回歸。或者歸還。淺顯的理解就是呼叫自己。那麼遞迴可以呼叫自己,肯定是有一些約束的條件。...

C 陣列 溫故而知新

using system using system.collections.generic using system.linq using system.text namespace 陣列 陣列初始化器只能在宣告陣列變數時使用,不能在宣告陣列之後使用 int iii new int 用花括號初始化陣...