柚子快報(bào)邀請碼778899分享:筆記 C語言十大基礎(chǔ)金磚
柚子快報(bào)邀請碼778899分享:筆記 C語言十大基礎(chǔ)金磚
十大金磚目錄:
? 何為C語言?? C語言是何來歷?? 編譯與鏈接 關(guān)系?? 如何理解main函數(shù)??庫函數(shù)?printf函數(shù)?關(guān)鍵字?ASCll碼表?轉(zhuǎn)義字符?注釋的2種形式
? 何為C語言?
人與人交流用人語,如英語 日語 而人與計(jì)算機(jī)交流用計(jì)算機(jī)語言,如C++/Java/Go/Python等等。其中C語言是眾多計(jì)算機(jī)語言中的一種。 我們可以通過計(jì)算機(jī)語言寫的程序,給計(jì)算機(jī)下達(dá)指令,讓計(jì)算機(jī)工作。
? C語言是何來歷?
每年都有更新的世界計(jì)算機(jī)排行榜:“大佬點(diǎn)我查看”
? 編譯與鏈接 關(guān)系?
? C語?是??編譯型計(jì)算機(jī)語?,我們寫的C語?源代碼其實(shí)都是?本?件,而?本?件本??法執(zhí)?,必須通過編譯器翻譯和鏈接器的鏈接,?成?進(jìn)制的可執(zhí)??件,可執(zhí)??件才能執(zhí)?。 ? C語?代碼是放在 .c 為后綴的?件中的,要得到最終運(yùn)?的可執(zhí)?程序,中間要經(jīng)過編譯和鏈接2個(gè) 過程。 ??個(gè)?程?般都會(huì)有多個(gè)源?件組成,如下圖所?,演?了源程序經(jīng)過編譯器和鏈接器處理的過程。
注:
每個(gè)源?件(.c)單獨(dú)經(jīng)過編譯器處理?成對應(yīng)的?標(biāo)?件(.obj為后綴的?件)多個(gè)?標(biāo)?件和庫?件經(jīng)過鏈接器處理?成對應(yīng)的可執(zhí)?程序(.exe?件)
這就是,在Windows電腦上C語?程序?成的exe可執(zhí)??件?
? 如何理解main函數(shù)?
int main()
{
return 0;
}
如上是main函數(shù)經(jīng)典模板,建議寫代碼第一先寫它? ——概念: ? main 函數(shù)也被叫做:主函數(shù)。 ? main函數(shù)有且僅有?個(gè),一個(gè).c文件中只能有一個(gè)主函數(shù)(main函數(shù))。而?個(gè)項(xiàng)?也只能有?個(gè)main函數(shù) 即使這個(gè)項(xiàng)?中有多個(gè).c?件。(因?yàn)槌绦虻??只能有?個(gè))。 ?每個(gè)C語?程序不管有多少?代碼,都是從 main 函數(shù)開始執(zhí)?的, main 函數(shù)是程序的?? ?main 前?的 int 表? main 函數(shù)執(zhí)?結(jié)束的時(shí)候返回?個(gè)整型類型的值。所以在 main 函數(shù)的最后寫 return 0; 正好前后呼應(yīng)。int表示取整型 注: ? 代碼中不能使用中?符號,?如括號和分號 ? ?條語句結(jié)束后,有分號 補(bǔ) main函數(shù)的多種寫法: 1·
void main()
{
printf("hehe\n");
}
特點(diǎn):太古老了,沒有返回值 2·
int main(void)
{
return 0;
}
特點(diǎn):跟經(jīng)典寫法效果是一樣的,只是知識參數(shù)部分多了void,這里的void表示main函數(shù)沒有參數(shù) 3·
int main(int argc, char* argv[])
{
return 0;
}
特點(diǎn):其實(shí)main函數(shù)可以有參數(shù),比如以上所示,他的參數(shù)是有特殊意義的;如果你想使用main函數(shù)的參數(shù),那就協(xié)商; 如果不想使用main函數(shù)的參數(shù),那就不寫。在這里我們暫時(shí)不需要了解main函數(shù)的參數(shù)
?庫函數(shù)
為了不再重復(fù)實(shí)現(xiàn)常?的代碼,讓程序員提升開發(fā)效率,C語?標(biāo)準(zhǔn)規(guī)定了?組函數(shù),這些函數(shù)再由不同的編譯器?商根據(jù)標(biāo)準(zhǔn)進(jìn)?實(shí)現(xiàn),提供給程序員使?。這些函數(shù)組成了?個(gè)函數(shù)庫,被稱為標(biāo)準(zhǔn)庫,這些函數(shù)也被稱為庫函數(shù)。在這個(gè)基礎(chǔ)上?些編譯器?商可能會(huì)額外擴(kuò)展提供部分函數(shù)(這些函數(shù)其他編譯器不?定?持)。 ?個(gè)系列的庫函數(shù)?般會(huì)聲明在同?個(gè)頭?件中,所以庫函數(shù)的使?,要包含對應(yīng)的頭?件。 庫函數(shù)?較多,可參考鏈接https://cplusplus.com/reference/clibrary/
?printf函數(shù)
我們在玩代碼時(shí)常常會(huì)遇到printf,如下
printf("hello C\n");
那它究竟是干嘛的呢?其實(shí)printf( print f ormat — 按照格式來打印信息) 又叫打印函數(shù),是?個(gè)庫函數(shù)。它的功能是在標(biāo)準(zhǔn)輸出設(shè)備(?般指屏幕)上進(jìn)?信息的打印。只要把想要打印的?串字符放 在雙引號中并傳遞給printf函數(shù)就可以打印。 printf函數(shù)也可以?來打印其他類型的數(shù)據(jù),?如:
int n = 100;
printf("%d\n", n); //printf打印整型
printf("%c\n", 'q'); //printf打印字符
printf("%lf\n", 3.14); //printf打印雙精度浮點(diǎn)型
這?的 %d,%c 等是占位符,會(huì)被后邊的值替換。
同時(shí)我們在使?庫函數(shù)的時(shí)候,是需要包含頭?件的,?如: printf 函數(shù)需要包含的就是stdio.h 這個(gè)頭?件,具體的?法就是:
#include
?關(guān)鍵字
C語?中有?批保留的名字的符號,?如: int 、 if 、 return ,這些符號被稱為保留字或者關(guān)鍵字。 ? 關(guān)鍵字都有特殊的意義,是保留給C語?使?的 ? 程序員??在創(chuàng)建標(biāo)識符的時(shí)候是不能和關(guān)鍵字重復(fù)的 ? 關(guān)鍵字也是不能??創(chuàng)建的。 C語?常用的32個(gè)關(guān)鍵字如下 注:在C99標(biāo)準(zhǔn)中加?了 inline 、 restrict 、 _Bool 、 _Complex 、 _Imaginary 等關(guān)鍵 字。 ?些關(guān)鍵字?家可以去了解?下,不過使?最多的還是上?的32個(gè)關(guān)鍵字。 注:https://zh.cppreference.com/w/c/keywordC語?關(guān)鍵字的全部介紹)
?ASCll碼表
參考:https://zh.cppreference.com/w/cpp/language/ascii ? 字符A~Z的ASCII碼值從65–90 ? 字符a~z的ASCII碼值從97–122 ? 對應(yīng)的??寫字符(a和A)的ASCII碼值的差值是32 ? 數(shù)字字符0~9的ASCII碼值從48–57 ? 換? \n 的ASCII值是:10 ? 在這些字符中ASCII碼值從0~31 這32個(gè)字符是不可打印字符,?法打印在屏幕上觀察
?轉(zhuǎn)義字符
顧名思義:轉(zhuǎn)變原來的意思的字符。
? ? :在書寫連續(xù)多個(gè)問號時(shí)使?,防?他們被解析成三字?詞,在新的編譯器上沒法驗(yàn)證了。 ? ’ :?于表?字符常量 ’ ? " :?于表??個(gè)字符串內(nèi)部的雙引號 如 “"” ? \ :?于表??個(gè)反斜杠,防?它被解釋為?個(gè)轉(zhuǎn)義序列符。 ? \a :警報(bào),這會(huì)使得終端發(fā)出警報(bào)聲或出現(xiàn)閃爍,或者兩者同時(shí)發(fā)?。 ? \b :退格鍵,光標(biāo)回退?個(gè)字符,但不刪除字符。(退格后打字會(huì)覆蓋光標(biāo)后的東西) ? \f :換?符,光標(biāo)移到下??。在現(xiàn)代系統(tǒng)上,這已經(jīng)反映不出來了,?為改成類似于 \v 。 ? \n :換?符。 ? \r :回?符,光標(biāo)移到同??的開頭。 ? \t :制表符,光標(biāo)移到下?個(gè)?平制表位,通常是下?個(gè)4/8的倍數(shù)。 ? \v :垂直分隔符,光標(biāo)移到下?個(gè)垂直制表位,通常是下??的同?列。
下?2種轉(zhuǎn)義字符可以理解為:字符的8進(jìn)制或者16進(jìn)制表?形式 ? \ddd :d d d表?1~3個(gè)?進(jìn)制的數(shù)字。 如: \130 表?字符X ? \xdd :d d表?2個(gè)?六進(jìn)制數(shù)字。 如: \x30 表?字符0 \0 :null 字符,代表沒有內(nèi)容, \0 就是 \ddd 這類轉(zhuǎn)義字符的?種,?于字符串的結(jié)束標(biāo)志,其ASCII碼值是0.
?注釋的2種形式
? 第?種?法是將注釋放在**/…/** 之間,內(nèi)部可以分?
/* 注釋 */
/*
這是??注釋
*/
這種注釋可以插在?內(nèi)。
int fopen(char* s /* file name */, int mode);
上??例中, /* file name */ ?來對函數(shù)參數(shù)進(jìn)?說明,跟在它后?的代碼依然會(huì)有效執(zhí)?。 這種注釋?定不能忘記寫結(jié)束符號 */ ,否則很容易導(dǎo)致錯(cuò)誤。
printf("a "); /* 注釋?
printf("b ");
printf("c "); /* 注釋? */
printf("d ");
上??例的原意是,第??和第三?代碼的尾部,有兩個(gè)注釋。 但是,第??注釋忘記寫結(jié)束符號,導(dǎo)致注釋?延續(xù)到第三?結(jié)束。 /**/ 的這個(gè)注釋也不?持嵌套注釋, /* 開始注釋后,遇到第?個(gè) */ 就認(rèn)為注釋結(jié)束了。
/*
printf("a ");
printf("b ");
printf("c "); /* 注釋? */
printf("d ");
? 第?種寫法是將注釋放在雙斜杠== //== 后?,從雙斜杠到?尾都屬于注釋。這種注釋只能是單?,可以 放在??,也可以放在??語句的結(jié)尾。這是C99標(biāo)準(zhǔn)新增的語法。
// 這是??注釋
int x = 1; // 這也是注釋
不管是哪?種注釋,都不能放在雙引號??。 雙引號??的注釋符號,會(huì)成為字符串的?部分,解釋為普通符號,失去注釋作?
printf("http:// hello /* world */ ");
上??例中,雙引號??的注釋符號,都會(huì)被視為普通字符,沒有注釋作?
柚子快報(bào)邀請碼778899分享:筆記 C語言十大基礎(chǔ)金磚
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。