昨日回顧:
雙鏈表頭插尾插頭刪尾刪
文件的屬性
棧狡门,堆陷寝,隊列
宏
索引結(jié)點,文件描述符
文件屬性:12種
r:文件必須存在
w:文件存在融撞,則新建文件覆蓋原文件。若不存在粗蔚,新建
a:文件必須存在尝偎。
+:r + w
FILE *p 注意文件是否打開成功。
打開/關(guān)閉文件fopen()/fclose()
文件操作函數(shù)
字符讀寫 fgetc()/fputc()
字符串讀寫 fgets()/ fputs()
格式化讀寫 寫fprintf()/ 讀fscanf()
塊讀寫 寫fread()/ 讀fwrite
fread(adress,size,count,fp); //別忘了&
fwrite(adress,size,count,fp);
段錯誤(內(nèi)存錯誤):
指針:
常量指針/NULL/野指針
數(shù)組的越界
內(nèi)存不足 雙釋放 內(nèi)存泄露
遞歸層次太深
malloc()/free() 成對出現(xiàn)
=====================================
1.多文件
(1)文件的包含:
標準庫的頭文件 用<>括起來 .h 為頭文件
例
#include<stdio.h>
自定義頭文件:
一般用""括起來鹏控;為了區(qū)分庫的頭文件致扯,編譯器的查找路徑為當(dāng)前工作路徑。
區(qū)別就是效率問題当辐。
static 函數(shù)只限于本函數(shù)調(diào)用抖僵。
(2)多文件
便于項目管理,可根據(jù)個人需求或項目需求將項目劃分為不同的文件缘揪。
有利于提高開發(fā)效率耍群。
編譯時:
gcc file1 file2 file3 ... -o file
可以將多個文件存放于不同的目錄中,編譯時找路徑找筝。
源文件--->src目錄
頭文件--->include目錄
可執(zhí)行文件--->bin目錄
(3)自定義頭文件
xxxx.h
自定義頭文件包含:函數(shù)聲明蹈垢,庫的頭文件,自定義的其他頭文件袖裕,結(jié)構(gòu)體曹抬,宏定義。
全局變量不建議定義在自定義頭文件里急鳄,造成效率底下谤民,若該頭文件在項目中的多文件中包含則會導(dǎo)致重復(fù)定義。
(4)調(diào)用全局變量:
在文件1.c中定義的全局變量疾宏,若在其他文件中使用:
1.在其他文件中使用extern聲明該全局變量
2.將此文件1.c包含到其他文件中张足。
(5)assert()函數(shù)
#include<assert.h>
斷言,一般用于代碼調(diào)試坎藐,碰到此處兢榨,程序會終止運行,并給出錯誤的地方顺饮!
(6)注意事項:
雙目運算符: + - * / += -= *= /= >= <= 等雙目運算符
前后要加空格
例
a + b = c;
a += b;
a >= b;
單目運算符不需要加空格吵聪。
空格,空行的使用:
緊密相連的代碼不需要加空行兼雄。
不同代碼模塊之間加空行吟逝。
注釋的使用:應(yīng)避免歧義。
循環(huán)效率:
for(i=0; i<=10; i++) //兩步判斷<和=
for(i=0; i<11; i++) //效率更高點
2.選擇排序 從頭或從尾選
11 8 25 16 9
arr[0] arr[1] arr[2] arr[3] arr[4]
=========================================================
8 25 16 9
arr[1] arr[2] arr[3] arr[4] 依次比較(較小數(shù))
11
arr[0]
11 25 16 9
arr[1] arr[2] arr[3] arr[4] 依次比較(較小數(shù))
8
arr[0]
25 16 9
arr[2] arr[3] arr[4] 依次比較(較小數(shù))
8 11
arr[0] arr[1]
25 16 11
arr[2] arr[3] arr[1] 依次比較(較小數(shù))
8 9
arr[0] arr[1]
16 11
arr[3] arr[1] 依次比較(較小數(shù))
8 9 25
arr[0] arr[1] arr[2]
25 11
arr[3] arr[4] 依次比較(較小數(shù))
8 9 16
arr[0] arr[1] arr[2]
25 16
arr[3] arr[4] 依次比較(較小數(shù))
8 9 11
arr[0] arr[1] arr[2]
11 8 9 16 25
arr[0] arr[1] arr[2] arr[3] arr[4]
3.數(shù)組傳參
數(shù)組名代表的是數(shù)組地址I饫摺块攒!
===================================
項目相關(guān)
初級架構(gòu)
界面層:
繪制界面
獲取數(shù)據(jù)--->用戶的輸入
業(yè)務(wù)邏輯層:
調(diào)用數(shù)據(jù)層函數(shù)励稳,進行數(shù)據(jù)層和界面層的交互
數(shù)據(jù)層:
數(shù)據(jù)的增刪改查
讀寫文件---->
讀文件:文件--->鏈表(即創(chuàng)建鏈表)、
寫文件:鏈表--->文件
.h:包含頭文件和函數(shù)聲明
.c:函數(shù)功能實現(xiàn)和函數(shù)的調(diào)用*
快速排序
low指針囱井,high指針驹尼,輔助指針
快速排序
第一數(shù)拿出,從末尾找比他小的值庞呕,放到首位
從第二位開始找比他大的值新翎,放到末尾。找到就繼續(xù)住练,沒找到則結(jié)束地啰。
繼續(xù)循環(huán)末尾第二,第三位讲逛,兩邊交互著來亏吝。
low指針,high指針盏混,不能動
i=low; //輔助指針
j=high;
int middle = arr[0]; //為了記錄中間參考值蔚鸥,防止掉失
if(low<high)
{
while(i<j &&arr[j]>middle)
j--; //底位比高位小,不用交換许赃,指針后移
if(i<j)
arr[i]=arr[j];
while(i<j&&arr[i]>middle)
i++;
if(i<j)
arr[j]=arr[i];
}
arr[i] = middle;
//再兩分
sort(arr,low,i-1);
sort(arr,i+1,high);
排版25分鐘