-
棧:
局部變量陆馁,程序運(yùn)行期間的變量分配大部分是在棧空間分配侍匙,函數(shù)結(jié)束后氮惯,系統(tǒng)自動(dòng)回收資源叮雳,空間比較小。
-
堆:
堆空間比較大妇汗,可以由程序員自由支配帘不,只能手動(dòng)申請(qǐng)和釋放(malloc()申請(qǐng)的空間在堆上,free()釋放空間杨箭,即申請(qǐng)的空間如果不用一定要釋放寞焙,不然時(shí)間長(zhǎng)會(huì)出現(xiàn)內(nèi)存不足的問(wèn)題)
-
段錯(cuò)誤
----指針:常量指針/NULL指針/野指針
----數(shù)組:數(shù)組越界訪問(wèn),訪問(wèn)到非法取余或者修改了其他變量
----其他:內(nèi)存不足互婿,雙釋放捣郊,內(nèi)存泄露
-
棧和隊(duì)列
棧:先進(jìn)先出
壓棧:push();
出棧:pop();
隊(duì)列:先進(jìn)先出
-
宏
#define LEN sizeof(STU)
#undef LEN
//取消宏定義
#if
#elsif
#else
#endif
-
文件
1.普通文件:-
2.目錄文件:d
3.鏈接文件:l
4.管道文件:p
5.設(shè)備文件:b
6.字符文件:c
文件信息:索引節(jié)點(diǎn)(index)
文件操作:文件描述符(fd)linux系統(tǒng):65535
-
文件的定義
一組相關(guān)數(shù)據(jù)的有序集合,即為文件慈参。
-
文件的操作
打開:fopen(文件名呛牲,屬性);
關(guān)閉:fclose(文件指針);
注:文件使用后一定需要關(guān)閉!
文件指針:文件指針結(jié)構(gòu)體:FILE(包含了文件的基本信息)#include <stdio.h>
定義文件指針:FILE *指針變量名
文件名:可以是已存在的驮配,也可以是不存在的
屬性:
+:可讀寫
t:文本文件
b:二進(jìn)制文件
r(讀)
w(寫)
a(追加)
rt,wt,at,rb,wb,ab,rt+,wt+,at+,rb+,wb+,at+
rt+/wt+:可讀寫
rt/rb:只讀
wt/wb:只寫娘扩,帶w屬性的,可以寫文件壮锻,若文件已存在琐旁,則清除文件重新寫文件;若不存在猜绣,則以給定文件名創(chuàng)建文件灰殴。
r:帶r屬性的文件,必須存在j稀N铡!
*fgetc()/fputc():字符讀寫
fgets()/fputs():字符串讀寫
fscanf()/fprintf():格式化讀寫
fread()/fwrite():塊讀寫
注:重點(diǎn)掌握f(shuō)scanf()/fprintf()或者fread()/fwrite()至少掌握一種
在c89標(biāo)準(zhǔn)中辣之,fread()/fwrite()有bug
----文件的結(jié)束標(biāo)志EOF义图。
rewind(文件指針):將文件指針指向文件頭
-
fgetc/fputc
fgetc(文件指針);讀取一個(gè)字符
fputc(字符,文件指針);輸出一個(gè)字符
-
fgets/fputs
fgets(字符數(shù)組/字符串常量/指針,size,fp);
fputs(arr,fp)
stdin:標(biāo)準(zhǔn)輸入----》鍵盤
stdout:標(biāo)準(zhǔn)輸出----》終端
stderr:錯(cuò)誤輸出----》終端
-
fscanf()/fprintf()
fscanf(fp,"格式",參數(shù)列表);
fprintf(fp,"格式",參數(shù)列表
-
fread()/fwrite()
fread(address,sizeof,count,fp);
fwrite(address,sizeof,count,fp);按塊寫入數(shù)據(jù)。
address:地址
count:讀寫的塊數(shù)召烂,一般情況下默認(rèn)1碱工;