內(nèi)存分配:堆(heap)和棧(stack)
堆(heap)和棧(stack)使用:
通過malloc獲取一塊內(nèi)存,指針在棧上面,
函數(shù)退出時,棧會彈出,所以就不再存在了
棧里面不能存太多內(nèi)容,會棧溢出(stack overflow),所以這是需要malloc
函數(shù)傳參,直接傳棧上的指針,這個函數(shù)會發(fā)生段錯誤(aegfault),因?yàn)檎鎸?shí)數(shù)據(jù)會被彈出,這個指針就變成野指針。

FILE相關(guān)函數(shù):fopen、fread、fclose、rewind,用來處理文件,但是他們都是作用在文件結(jié)構(gòu)體上面的(他屬于C標(biāo)準(zhǔn)庫里面自帶的結(jié)構(gòu)體,不需要自己定義)

errno和perror()報(bào)告錯誤,每當(dāng)出錯的時候,程序會設(shè)置一個errno的外部變量,用來標(biāo)記具體發(fā)生什么,errno標(biāo)記的僅僅是數(shù)字,可以使用perror()答應(yīng)出錯信息。

open_database()用來打開文件、分配內(nèi)存

close_database()用來關(guān)閉文件、釋放內(nèi)存


char *strcpy(char *dest, const char *src);????僅可以復(fù)制字符串
char *strncpy(char *dest, const char?*src, size_t n); 雖然可以指定傳輸個數(shù),但是若提前遇到'\0'直接結(jié)束,小于n
void *memcpy(void *dest, const void *src, size_t n);可以復(fù)制任意內(nèi)容,不僅僅是字符串。


使用{.id, .set}的方式初始化結(jié)構(gòu)體當(dāng)中的成員




