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 用花括號初始化陣...