- 編碼:
Float編碼:高8位存階碼,低24位存尾數
Int編碼:用補碼
正數的原碼,反碼,補碼相同
例如:7=(0111)
負數的原碼-7=(1111)
反碼(1000)除了第一個符號位不變,其他取反
補碼(1001)反碼加一
其中,負數的符號位爲1,整數爲0.
- 三目操作符:(a>b)?a:b
式1成立則去式2,否則取式3
- switch()
{
Case 式1: //式1是常量表達式
語句序列1;
Break;
Case 式2: //式2是常量表達式
語句序列2;
Break;
Default:
語句;
}
- 遞歸
- 保護現場,把所有信息壓棧
- 執行,返回
遞推比遞歸運行更快。
- strcpy 字符串複製
strcmp比較字符串大小
strlen(“china”)=5;
sizeof(“china”)=6; //字符串結尾處有\0
8.循環語句
for
while
do while
9.指針
- 指針存儲的是首地址
- Int *pi=NULL; //指針的初始化
- 指針的加減
Pi+1的值與類型有關,int型+4,char型+1
一般用於數組,否則會出現野指針。
10.數組
對於一個數組a
a[el]與(a+el)等價;
對於指針變量p
*(p+el)與p[el]等價
- 數組變量a的右值爲數組首元素的地址(&a[0])
11.一維數組作爲形參會:丟失長度;退化爲指針
12.選擇排序
13.冒泡排序
14.malloc函數常用方式:
int *pi=(int *)malloc(2*sizeof(int));
15.鏈表
- 數據域
- 指針域
- 頭指針
16.函數形參出現指針的原因:
- 指針指向結構體,提高傳參效率
- 修改對應實參的值
17.棧:
- 只有頂棧可以操作
- 先進後出
18.隊列:
- 隊頭:允許刪除
- 隊尾:允許插入
- 先進先出
19.完全二叉樹
- N個結點的完全二叉樹的深度爲:K=|log2 (n)|+1
- N個結點的完全二叉樹,按層序編號:
i=1,結點i是二叉樹的根,無雙親
i>1,其雙親結點[i/2]
如果2i>n,結點i無左孩子,否則其左孩子爲2i
如果2i+1>n,結點i無右孩子,否則其右孩子爲2i+1
20.前序遍歷
21.中序遍歷
22.後序遍歷
23.堆調整
24.時間複雜度
25.二叉樹的深度(N個結點)
[log2(n)]+1
26.內核空間從內到外:內核,系統調用
用戶空間從內到外:shell/公用函數庫,應用程序 (shell和公用函數庫在同一層)
從用戶空間跨到內核空間有較大的系統開銷
27.文件編程
文件IO:系統調用次數多,開銷大
標準IO:帶有緩衝機制
28.網絡編程基礎
- 服務器的IP地址和端口號必須是固定值
29.數據庫
建立和打開數據庫:sqlite3 stu.db
在數據庫裏建表:>create table student(
>id integer primary key,
>name text,
>sex integer);
以及其他的插入,查看等操作
30.窗口操作(ncurses)
- 創建子窗口
- 清空子窗口
- 銷燬子窗口