成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

13 萬字 C 語言從入門到精通保姆級教程2021 年版 (建議收藏)

zombieda / 4506人閱讀

摘要:友情提示先關(guān)注收藏,再查看,萬字保姆級語言從入門到精通教程。及大牛出天地開始有隨之乃有萬種語年英國劍橋大學(xué)推出了語言。


友情提示:先關(guān)注收藏,再查看,13 萬字保姆級 C 語言從入門到精通教程。

C語言保姆級配套代碼與視頻教程鏈接

文章目錄

計算機常識

  • 什么是計算機 ?

    • 顧名思義,就是能夠進(jìn)行數(shù)據(jù)運算的機器(臺式電腦、筆記本電腦、平板電腦、智能手機)
    • 計算機_百度百科
  • 計算機的發(fā)明者是誰 ?

    • 關(guān)于電子計算機的發(fā)明者是誰這一問題,有好幾種答案:
      • 1936年***英國數(shù)學(xué)家圖靈***首先提出了一種以程序和輸入數(shù)據(jù)相互作用產(chǎn)生輸出的計算機***構(gòu)想***,后人將這種機器命名為通用圖靈計算機
      • 1938年***克蘭德·楚澤***發(fā)明了首臺采用***繼電器***進(jìn)行工作的計算機,這臺計算機命名為***Z1***,但是繼電器是機械式的,并不是完全的電子器材
      • 1942年***阿坦那索夫和貝利***發(fā)明了首臺采用***真空管***的計算機,這臺計算機命名為***ABC***
      • 1946年ENIAC誕生,它擁有了今天計算機的主要結(jié)構(gòu)和功能,是通用計算機
  • 現(xiàn)在世界上***公認(rèn)***的第一臺現(xiàn)代電子計算機是1946年在美國賓夕法尼亞大學(xué)誕生的ENIAC(Electronic Numerical Integrator And Calculator)
  • 計算機特點是什么 ?
    • 計算機是一種電器, 所以計算機只能識別兩種狀態(tài), 一種是通電一種是斷電

    • 正是因為如此, 最初ENIAC的程序是由很多開關(guān)和連接電線來完成的。但是這樣導(dǎo)致***改動一次程序要花很長時間***(需要人工重新設(shè)置很多開關(guān)的狀態(tài)和連接線)

    • 為了提高效率,工程師們想能不能把程序和數(shù)據(jù)都放在存儲器中, 數(shù)學(xué)家馮·諾依曼將這個思想以數(shù)學(xué)語言系統(tǒng)闡述,提出了存儲程序計算機模型(這是所謂的馮·諾依曼機)

    • 那利用數(shù)學(xué)語言如何表示計算機能夠識別的通電和斷電兩種狀態(tài)呢?

      • 非常簡單用0和1表示即可
      • 所以計算機能識別的所有指令都是由0和1組成的
      • 所以計算機中存儲和操作的數(shù)據(jù)也都是由0和1組成的

0和1更準(zhǔn)確的是應(yīng)該是高電平和低電平, 但是這個不用了解, 只需要知道計算機只能識別0和1以及存儲的數(shù)據(jù)都是由0和1組成的即可。


什么是計算機程序 ?

  • 計算機程序是為了告訴計算機"做某件事或解決某個問題"而用"***計算機語言***編寫的命令集合(語句)

  • 只要讓計算機執(zhí)行這個程序,計算機就會自動地、有條不紊地進(jìn)行工作,計算機的一切操作都是由程序控制的,離開程序,計算機將一事無成

  • 現(xiàn)實生活中你如何告訴別人如何做某件事或者解決某個問題?

    • 通過人能聽懂的語言: 張三你去樓下幫我買一包煙, 然后順便到快遞箱把我的快遞也帶上來
    • 其實我們通過人能聽懂的語言告訴別人做某件事就是在發(fā)送一條條的指令
    • 計算機中也一樣, 我們可以通過計算機語言告訴計算機我們想做什么, 每做一件事情就是一條指令, 一條或多條指令的集合我們就稱之為一個計算機程序

什么是計算機語言 ?

  • 在日常生活、工作中, 語言是人們交流的工具
    • 中國人和中國人交流,使用中文語言
    • 美國人和美國人交流,使用英文語言
    • 人想要和計算機交流,使用計算機語言
  • 可以看出在日常生活、工作中,人們使用的語言種類很多
    • 如果一個很牛人可能同時掌握了中文語言和英文語言, 那么想要和這個人交流既可以使用中文語言,也可以使用英文語言
    • 計算機其實就是一個很牛的人, 計算機同時掌握了幾十門甚至上百門語言, 所以我們只要使用任何一種計算機已經(jīng)掌握的語言就可以和計算機交流

常見的計算機語言類型有哪些 ?

  • 機器語言
    • 所有的代碼里面只有0和1, 0表示不加電,1表示加電(紙帶存儲時 1有孔,0沒孔)
    • 優(yōu)點:直接對硬件產(chǎn)生作用,程序的執(zhí)行效率非常非常高
    • 缺點:指令又多又難記、可讀性差、無可移植性
  • 匯編語言
    • 符號化的機器語言,用一個符號(英文單詞、數(shù)字)來代表一條機器指令
    • 優(yōu)點:直接對硬件產(chǎn)生作用,程序的執(zhí)行效率非常高、可讀性稍好
    • 缺點:符號非常多和難記、無可移植性
  • 高級語言
    • 非常接近自然語言的高級語言,語法和結(jié)構(gòu)類似于普通英文
    • 優(yōu)點:簡單、易用、易于理解、遠(yuǎn)離對硬件的直接操作、有可移植性
    • 缺點:有些高級語言寫出的程序執(zhí)行效率并不高
  • 對比(利用3種類型語言編寫1+1)
    • 機器語言
      • 10111000 00000001 00000000 00000101 00000001 00000000
    • 匯編語言
      • MOV AX, 1 ADD AX, 1
    • 高級語言
      • 1 + 1

什么是C語言?

  • C語言是一種用于和計算機交流的高級語言, 它既具有高級語言的特點,又具有匯編語言的特點
    • 非常接近自然語言
    • 程序的執(zhí)行效率非常高
  • C語言是所有編程語言中的經(jīng)典,很多高級語言都是從C語言中衍生出來的,
    • 例如:C++、C#、Object-C、Java、Go等等
  • C語言是所有編程語言中的經(jīng)典,很多著名的系統(tǒng)軟件也是C語言編寫的
    • 幾乎所有的操作系統(tǒng)都是用C語言編寫的
    • 幾乎所有的計算機底層軟件都是用C語言編寫的
    • 幾乎所有的編輯器都是C語言編寫的

C語言歷史

  • 最早的高級語言:FORTRAN–>ALGOL–>CPL–>BCPL–>C–>C++等

“初,世間無語言,僅電路與連線。及大牛出,天地開,始有 FORTRAN、 LISP、ALGOL 隨之, 乃有萬種語”

  • 1963年英國劍橋大學(xué)推出了CPL(Combined Programming Langurage)語言。 CPL語言在ALGOL 60的基礎(chǔ)上接近硬件一些,但規(guī)模比較大,難以實現(xiàn)
  • 1967年英國劍橋大學(xué)的 Matin Richards(理查茲)對CPL語言做了簡化,推出了 BCPL (Base Combined Programming Langurage)語言
  • 1970年美國貝爾實驗室的 Ken Thompson(肯·湯普遜) 以 BCPL 語言為基礎(chǔ),又作了進(jìn)一步的簡化,設(shè)計出了很簡單的而且很接近硬件的 B 語言(取BCPL的第一個字母),并用B語言寫出了第一個 UNIX 操作系統(tǒng)。但B語言過于簡單,功能有限
  • 1972年至1973年間,貝爾實驗室的 Dennis.Ritchie(丹尼斯·里奇) 在 B語言的基礎(chǔ)上設(shè)計出了C語言(取BCPL的第二個字母)。C語言即保持 BCPL 語言和B語言的優(yōu)點(精練、接近硬件),又克服了他們的缺點(過于簡單,數(shù)據(jù)無類型等)

C語言標(biāo)準(zhǔn)

  • 1983年美國國家標(biāo)準(zhǔn)局(American National Standards Institute,簡稱ANSI)成立了一個委員會,開始制定C語言標(biāo)準(zhǔn)的工作
  • 1989年C語言標(biāo)準(zhǔn)被批準(zhǔn),這個版本的C語言標(biāo)準(zhǔn)通常被稱為ANSI C(C89)
  • 1999年,國際標(biāo)準(zhǔn)化組織ISO又對C語言標(biāo)準(zhǔn)進(jìn)行修訂,在基本保留原C語言特征的基礎(chǔ)上,針對應(yīng)該的需要,增加了一些功能,命名為***C99***
  • 2011年12月,ANSI采納了ISO/IEC 9899:2011標(biāo)準(zhǔn)。這個標(biāo)準(zhǔn)通常即***C11,它是C程序語言的現(xiàn)行標(biāo)準(zhǔn)***

C語言現(xiàn)狀


為什么要學(xué)習(xí)C語言?

  • 40多年經(jīng)久不衰
  • 了解操作系統(tǒng)、編譯原理、數(shù)據(jù)結(jié)構(gòu)與算法等知識的最佳語言
  • 了解其它語言底層實現(xiàn)原理必備語言
  • 基礎(chǔ)語法與其它高級語言類似,學(xué)會C語言之后再學(xué)習(xí)其它語言事半功倍,且知根知底

當(dāng)你想了解底層原理時,你才會發(fā)現(xiàn)后悔當(dāng)初沒有學(xué)習(xí)C語言
當(dāng)你想學(xué)習(xí)一門新的語言時, 你才會發(fā)現(xiàn)后悔當(dāng)初沒有學(xué)習(xí)C語言
當(dāng)你使用一些高級框架、甚至系統(tǒng)框架時發(fā)現(xiàn)提供的API都是C語言編寫的, 你才發(fā)現(xiàn)后悔當(dāng)初沒有學(xué)習(xí)C語言
學(xué)好數(shù)理化,走遍天下都不拍
學(xué)好C語言,再多語言都不怕


如何學(xué)好C語言

學(xué)習(xí)本套課程之前學(xué)習(xí)本套課程中學(xué)習(xí)本套課程之后
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gHyaoC72-1623039894713)(https://upload-images.jianshu.io/upload_images/647982-c724f6cd01191121.png?imageMogr2/auto-orient/strip)]
  • 如何達(dá)到這樣的效果

工欲善其事必先利其器

編寫C語言程序用什么工具 ?

  • 記事本(開發(fā)效率低)
  • Vim(初學(xué)者入門門檻高)
  • VSCode(不喜歡)
  • eclipse(不喜歡)
  • CLion(深愛, 但收費)
  • Xcode(逼格高, 但得有蘋果電腦)
  • Qt Creator(開源免費,跨平臺安裝和運行)

什么是Qt Creator ?

  • Qt Creator 是一款新的輕量級集成開發(fā)環(huán)境(IDE)。它能夠跨平臺運行,支持的系統(tǒng)包括 Windows、Linux(32 位及 64 位)以及 Mac OS X
  • Qt Creator 的設(shè)計目標(biāo)是使開發(fā)人員能夠利用 Qt 這個應(yīng)用程序框架更加快速及輕易的完成開發(fā)任務(wù)
  • 開源免費, 簡單易用, 能夠滿足學(xué)習(xí)需求

集成開發(fā)環(huán)境(IDE,Integrated Development Environment )是用于提供程序開發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具。集成了代碼編寫功能、分析功能、編譯功能、調(diào)試功能等一體化的開發(fā)軟件服務(wù)套。


Qt Creator安裝

  • 切記囫圇吞棗, 不要糾結(jié)里面的東西都是什么含義, 初學(xué)者安裝成功就是一種成功

  • 下載Qt Creator離線安裝包:

    • http://download.qt.io/archive/qt/
    • 極速下載地址:
    • 鏈接:https://pan.baidu.com/s/1gx0hNDBJkA2gx5wF1Jx34w
      提取碼:0fg9
  • 以管理身份運行離線安裝包

  • 下一步,下一步,下一步,等待ing…


    • +
      +
  • 注意安裝路徑中最好不要出現(xiàn)中文

  • 對于初學(xué)者而言全選是最簡單的方式(重點!!!)





  • 配置Qt Creator開發(fā)環(huán)境變量





你的安裝路徑/5.11.0/mingw53_32/bin
你的安裝路徑/Tools/mingw530_32/bin

  • 啟動安裝好的Qt Creator

  • 非全選安裝到此為止, 全選安裝繼續(xù)往下看
    • 出現(xiàn)這個錯誤, 忽略這個錯誤即可
  • 等待安裝完畢之后解決剛才的錯誤
    • 找到安裝目錄下的strawberry.msi,雙擊運行




什么是環(huán)境變量?

  • 打開我們添加環(huán)境變量的兩個目錄, 不難發(fā)現(xiàn)里面大部分都是.exe的可執(zhí)行程序
  • 如果我們不配置環(huán)境變量, 那么每次我們想要使用這些"可執(zhí)行程序"都必須"先找到這些應(yīng)用程序?qū)?yīng)的文件夾"才能使用
  • 為了方便我們在電腦上"任何地方"都能夠使用這些"可執(zhí)行程序", 那么我們就必須添加環(huán)境變量, 因為Windows執(zhí)行某個程序的時候, 會先到"環(huán)境變量中Path指定的路徑中"去查找

為什么要配置系統(tǒng)變量,不配置用戶變量

  • 用戶變量只針對使用這臺計算機指定用戶
    • 一個計算機可以設(shè)置多個用戶, 不同的用戶用不同的用戶名和密碼
    • 當(dāng)給計算機設(shè)置了多個用戶的時候,啟動計算機的時候就會讓你選擇哪個用戶登錄
  • 系統(tǒng)變量針對使用這臺計算機的所有用戶
    • 也就是說設(shè)置了系統(tǒng)變量, 無論哪個用戶登錄這臺計算機都可以使用你配置好的工具

Qt Creator快捷鍵

如何創(chuàng)建C語言程序

  • 這個世界上, 幾乎所有程序員入門的第一段代碼都是Hello World.
  • 原因是當(dāng)年C語言的作者Dennis Ritchie(丹尼斯 里奇)在他的名著中第一次引入, 傳為后世經(jīng)典, 其它語言亦爭相效仿, 以示敬意

如何創(chuàng)建C語言文件





C語言程序組成

  • 手機有很多功能, “開機”,“關(guān)機”,“打電話”,“發(fā)短信”,"拍照"等等

  • 手機中的每一個功能就相當(dāng)于C語言程序中的一個程序段(函數(shù))

  • 眾多功能中總有一個會被先執(zhí)行,不可能多個功能一起執(zhí)行

  • 想使用手機必須先執(zhí)行手機的開機功能

  • 所以C語言程序也一樣,由眾多功能、眾多程序段組成, 眾多C語言程序段中總有一個會被先執(zhí)行, 這個先執(zhí)行的程序段我們稱之為"主函數(shù)"

  • 一個C語言程序由多個"函數(shù)"構(gòu)成,每個函數(shù)有自己的功能

  • 一個程序***有且只有一個主函數(shù)***

  • 如果一個程序沒有主函數(shù),則這個程序不具備運行能力

  • 程序運行時系統(tǒng)會***自動調(diào)用***主函數(shù),而其它函數(shù)需要開發(fā)者***手動調(diào)用***

  • 主函數(shù)有固定書寫的格式和范寫

函數(shù)定義格式

  • 主函數(shù)定義的格式:
    • int 代表函數(shù)執(zhí)行之后會返回一個整數(shù)類型的值
    • main 代表這個函數(shù)的名字叫做main
    • () 代表這是一個函數(shù)
    • {} 代表這個程序段的范圍
    • return 0; 代表函數(shù)執(zhí)行完之后返回整數(shù)0
int main() {    // insert code here...    return 0;}
  • 其它函數(shù)定義的格式
    • int 代表函數(shù)執(zhí)行之后會返回一個整數(shù)類型的值
    • call 代表這個函數(shù)的名字叫做call
    • () 代表這是一個函數(shù)
    • {} 代表這個程序段的范圍
    • return 0; 代表函數(shù)執(zhí)行完之后返回整數(shù)0
int call() {    return 0;}

如何執(zhí)行定義好的函數(shù)

  • 主函數(shù)(main)會由系統(tǒng)自動調(diào)用, 但其它函數(shù)不會, 所以想要執(zhí)行其它函數(shù)就必須在main函數(shù)中手動調(diào)用
    • call 代表找到名稱叫做call的某個東西
    • () 代表要找到的名稱叫call的某個東西是一個函數(shù)
    • ; 代表調(diào)用函數(shù)的語句已經(jīng)編寫完成
    • 所以call();代表找到call函數(shù), 并執(zhí)行call函數(shù)
int main() {    call();    return 0;}
  • 如何往屏幕上輸出內(nèi)容
    • 輸出內(nèi)容是一個比較復(fù)雜的操作, 所以系統(tǒng)提前定義好了一個專門用于輸出內(nèi)容的函數(shù)叫做printf函數(shù),我們只需要執(zhí)行系統(tǒng)定義好的printf函數(shù)就可以往屏幕上輸出內(nèi)容
    • 但凡需要執(zhí)行一個函數(shù), 都是通過函數(shù)名稱+圓括號的形式來執(zhí)行
    • 如下代碼的含義是: 當(dāng)程序運行時系統(tǒng)會自動執(zhí)行main函數(shù), 在系統(tǒng)自動執(zhí)行main函數(shù)時我們手動執(zhí)行了call函數(shù)和printf函數(shù)
    • 經(jīng)過對代碼的觀察, 我們發(fā)現(xiàn)兩個問題
      • 并沒有告訴printf函數(shù),我們要往屏幕上輸出什么內(nèi)容
      • 找不到printf函數(shù)的實現(xiàn)代碼
int call(){    return 0;}int main(){    call();    printf();    return 0;}
  • 如何告訴printf函數(shù)要輸出的內(nèi)容
    • 將要輸出的內(nèi)容編寫到printf函數(shù)后面的圓括號中即可
    • 注意: 圓括號中編寫的內(nèi)容必須用雙引號引起來
printf("hello world/n");
  • 如何找到printf函數(shù)的實現(xiàn)代碼
    • 由于printf函數(shù)是系統(tǒng)實現(xiàn)的函數(shù), 所以想要使用printf函數(shù)必須在使用之前告訴系統(tǒng)去哪里可以找到printf函數(shù)的實現(xiàn)代碼
    • #include 就是告訴系統(tǒng)可以去stdio這個文件中查找printf函數(shù)的聲明和實現(xiàn)
#include int call(){    return 0;}int main(){    call();    printf("hello world/n");    return 0;}

如何運行編寫好的程序

  • 方式1:
    • 點擊小榔頭將"源代碼"編譯成"可執(zhí)行文件"
    • 找到編譯后的源代碼, 打開終端(CMD)運行可執(zhí)行文件




  • 方式2
    • 直接點擊Qt開發(fā)工具運行按鈕


main函數(shù)注意點及其它寫法

  • C語言中,每條完整的語句后面都必須以分號結(jié)尾
int main(){    printf("hello world/n") // 如果沒有分號編譯時會報錯    return 0;}
int main(){    // 如果沒有分號,多條語句合并到一行時, 系統(tǒng)不知道從什么地方到什么地方是一條完整語句    printf("hello world/n") return 0;}
  • C語言中除了注釋和雙引號引起來的地方以外都不能出現(xiàn)中文
int main(){    printf("hello world/n"); // 這里的分號如果是中文的分號就會報錯    return 0;}
  • 一個C語言程序只能有一個main函數(shù)
int main(){    return 0;}int main(){ // 編譯時會報錯, 重復(fù)定義    return 0;}
  • 一個C語言程序不能沒有main函數(shù)
int call(){ // 編譯時報錯, 因為只有call函數(shù), 沒有main函數(shù)    return 0;}
int mian(){ // 編譯時報錯, 因為main函數(shù)的名稱寫錯了,還是相當(dāng)于沒有main函數(shù)    return 0;}
  • main函數(shù)前面的int可以不寫或者換成void
#include main(){ // 不會報錯    printf("hello world/n");    return 0;}
#include void main(){  // 不會報錯    printf("hello world/n");    return 0;}
  • main函數(shù)中的return 0可以不寫
int main(){ // 不會報錯    printf("hello world/n");}
  • 多種寫法不報錯的原因
    • C語言最早的時候只是一種規(guī)范和標(biāo)準(zhǔn)(例如C89, C11等)
    • 標(biāo)準(zhǔn)的推行需要各大廠商的支持和實施
    • 而在支持的實施的時候由于各大廠商利益、理解等問題,導(dǎo)致了實施的標(biāo)準(zhǔn)不同,發(fā)生了變化
      • Turbo C
      • Visual C(VC)
      • GNU C(GCC)
    • 所以大家才會看到不同的書上書寫的格式有所不同, 有的返回int,有的返回void,有的甚至沒有返回值
    • 所以大家只需要記住最標(biāo)準(zhǔn)的寫法即可, no zuo no die
#include int main(){    printf("hello world/n");    return 0;}

Tips:
語法錯誤:編譯器會直接報錯
邏輯錯誤:沒有語法錯誤,只不過運行結(jié)果不正確


C語言程序練習(xí)

  • 編寫一個C語言程序,用至少2種方式在屏幕上輸出以下內(nèi)容
   *** ***  *********   *******    ****     **
  • 普通青年實現(xiàn)
printf(" *** *** /n");printf("*********/n");printf(" *******/n");printf("  ****/n");printf("   **/n");
  • 2B青年實現(xiàn)
printf(" *** *** /n*********/n *******/n  ****/n   **/n");
  • 文藝青年實現(xiàn)(裝逼的, 先不用理解)
int  i = 0;while (1) {    if (i % 2 == 0) {        printf(" *** *** /n");        printf("*********/n");        printf(" *******/n");        printf("  ****/n");        printf("   **/n");    }else    {        printf("/n");        printf("   ** ** /n");        printf("  *******/n");        printf("   *****/n");        printf("    **/n");    }    sleep(1);    i++;    system("cls");}

初學(xué)者如何避免程序出現(xiàn)BUG

                          _ooOoo_                         o8888888o                         88" . "88                         (| -_- |)                          O/ = /O                      ____/`---"/____                    .   " //| |// `.                     / //||| : |||// /                   / _||||| -:- |||||- /                     | | /// - /// | |                   | /_| ""/---/"" | |                    / .-/__ `-` ___/-. /                 ___`. ." /--.--/ `. . __              ."" "< `.___/_<|>_/___." >""".             | | : `- /`.;`/ _ /`;.`/ - ` : | |               / / `-. /_ __/ /__ _/ .-` / /       ======`-.____`-.___/_____/___.-`____.-"======                          `=---="       .............................................              佛祖保佑                   有無BUG
━━━━━━神獸出沒━━━━━━         ┏┓    ┏┓        ┏┛┻━━━━━━┛┻┓        ┃        ┃        ┃   ━    ┃        ┃ ┳┛   ┗┳ ┃        ┃        ┃        ┃   ┻    ┃        ┃          ┃        ┗━┓    ┏━┛Code is far away from bug with the animal protecting          ┃    ┃    神獸保佑,代碼無bug          ┃    ┃          ┃    ┗━━━┓          ┃        ┣┓          ┃     ┏━━┛┛          ┗┓┓┏━┳┓┏┛           ┃┫┫ ┃┫┫           ┗┻┛ ┗┻┛      ━━━━━━感覺萌萌噠━━━━━━
        ′′′′′′′′██′′′′′′′        ′′′′′′′████′′′′′′        ′′′′′████████′′′′        ′′`′███????███′′′′′        ′′′███?●??●?██′′′        ′′′███??????██′′′′′        ′′′███????██′                      項目:第一個C語言程序        ′′██████??███′′′′′                 語言: C語言        ′██████????███′′                   編輯器: Qt Creator         ██████??????███′′′′                版本控制:git-github        ′′▓▓▓▓▓▓▓▓▓▓▓▓▓?′′                 代碼風(fēng)格:江哥style        ′′????▓▓▓▓▓▓▓▓▓?′′′′′                      ′.???′′▓▓▓▓▓▓▓▓?′′′′′                      ′.??′′′′▓▓▓▓▓▓▓?                           ..??.′′′′▓▓▓▓▓▓▓?                           ′????????????                              ′′′′′′′′′███████′′′′′                      ′′′′′′′′████████′′′′′′′        ′′′′′′′█████████′′′′′′        ′′′′′′██████████′′′′             大部分人都在關(guān)注你飛的高不高,卻沒人在乎你飛的累不累,這就是現(xiàn)實!        ′′′′′′██████████′′′                     我從不相信夢想,我,只,相,信,自,己!        ′′′′′′′█████████′′        ′′′′′′′█████████′′′        ′′′′′′′′████████′′′′′        ________?????        _________????        _________????        ________??_??        _______??__??        _____ ??___??        _____??___??        ____??____??        ___??_____??        ███____ ??        ████____███        █ _███_ _█_███——————————————————————————女神保佑,代碼無bug——————————————————————

多語言對比

  • C語言
#includeint main() {    printf("南哥帶你裝B帶你飛");    return 0;}
  • C++語言
#includeusing namespace std;int main() {    cout << "南哥帶你裝B帶你飛" << endl;    return 0;}
  • OC語言
#import int main() {    NSLog(@"南哥帶你裝B帶你飛");    return 0;}
  • Java語言
class Test{    public static viod main()    {        system.out.println("南哥帶你裝B帶你飛");    }}
  • Go語言
package mainimport  "fmt" //引入fmt庫func main() {    fmt.Println("南哥帶你裝B帶你飛")}

什么是注釋?

  • 注釋是在所有計算機語言中都非常重要的一個概念,從字面上看,就是注解、解釋的意思
  • 注釋可以用來解釋某一段程序或者某一行代碼是什么意思,方便程序員之間的交流溝通
  • 注釋可以是任何文字,也就是說可以寫中文
  • 被注釋的內(nèi)容在開發(fā)工具中會有特殊的顏色

為什么要使用注釋?

  • 沒有編寫任何注釋的程序
void printMap(char map[6][7] , int row, int col);int main(int argc, const char * argv[]){    char map[6][7] = {        {"#", "#", "#", "#", "#", "#", "#"},        {"#", " ", " ", " ", "#" ," ", " "},        {"#", "R", " ", "#", "#", " ", "#"},        {"#", " ", " ", " ", "#", " ", "#"},        {"#", "#", " ", " ", " ", " ", "#"},        {"#", "#", "#", "#", "#", "#", "#"}    };    int row = sizeof(map)/sizeof(map[0]);    int col = sizeof(map[0])/ sizeof(map[0][0]);    printMap(map, row, col);    int pRow = 2;    int pCol = 1;    int endRow = 1;    int endCol = 6;    while ("R" != map[endRow][endCol]) {        printf("親, 請輸入相應(yīng)的操作/n");        printf("w(向上走) s(向下走) a(向左走) d(向右走)/n");        char run;        run = getchar();        switch (run) {            case "s":                if ("#" != map[pRow + 1][pCol]) {                    map[pRow][pCol] = " ";                    pRow++;//3                    map[pRow][pCol] = "R";                }                break;            case "w":                if ("#" != map[pRow - 1][pCol]) {                    map[pRow][pCol] = " ";                    pRow--;                    map[pRow][pCol] = "R";                }                break;            case "a":                if ("#" != map[pRow][pCol - 1]) {                    map[pRow][pCol] = " ";                    pCol--;                    map[pRow][pCol] = "R";                }                break;            case "d":                if ("#" != map[pRow][pCol + 1]) {                    map[pRow][pCol] = " ";                    pCol++;                    map[pRow][pCol] = "R";                }                break;        }        printMap(map, row, col);    }    printf("你太牛X了/n");    printf("想挑戰(zhàn)自己,請購買完整版本/n");    return 0;}void printMap(char map[6][7] , int row, int col){    system("cls");    for (int i = 0; i < row; i++) {        for (int j = 0; j < col; j++) {            printf("%c", map[i][j]);        }        printf("/n");    }}

  • 編寫了注釋的程序
/*     R代表一個人     #代表一堵墻//   0123456     ####### // 0     #   #   // 1     #R ## # // 2     #   # # // 3     ##    # // 4     ####### // 5     分析:     >1.保存地圖(二維數(shù)組)     >2.輸出地圖     >3.操作R前進(jìn)(控制小人行走)      3.1.接收用戶輸入(scanf/getchar)      w(向上走) s(向下走) a(向左走) d(向右走)      3.2.判斷用戶的輸入,控制小人行走         3.2.1.替換二維數(shù)組中保存的數(shù)據(jù)             (                1.判斷是否可以修改(如果不是#就可以修改)                2.修改現(xiàn)有位置為空白                3.修改下一步為R             )      3.3.輸出修改后的二維數(shù)組     4.判斷用戶是否走出出口*/// 聲明打印地圖方法void printMap(char map[6][7] , int row, int col);int main(int argc, const char * argv[]){    // 1.定義二維數(shù)組保存迷宮地圖    char map[6][7] = {        {"#", "#", "#", "#", "#", "#", "#"},        {"#", " ", " ", " ", "#" ," ", " "},        {"#", "R", " ", "#", "#", " ", "#"},        {"#", " ", " ", " ", "#", " ", "#"},        {"#", "#", " ", " ", " ", " ", "#"},        {"#", "#", "#", "#", "#", "#", "#"}    };    // 2.計算地圖行數(shù)和列數(shù)    int row = sizeof(map)/sizeof(map[0]);    int col = sizeof(map[0])/ sizeof(map[0][0]);    // 3.輸出地圖    printMap(map, row, col);    // 4.定義變量記錄人物位置    int pRow = 2;    int pCol = 1;    // 5.定義變量記錄出口的位置    int endRow = 1;    int endCol = 6;    // 6.控制人物行走    while ("R" != map[endRow][endCol]) {        // 6.1提示用戶如何控制人物行走        printf("親, 請輸入相應(yīng)的操作/n");        printf("w(向上走) s(向下走) a(向左走) d(向右走)/n");        char run;        run = getchar();        // 6.2根據(jù)用戶輸入控制人物行走        switch (run) {            case "s":                if ("#" != map[pRow + 1][pCol]) {                    map[pRow][pCol] = " ";                    pRow++;//3                    map[pRow][pCol] = "R";                }                break;            case "w":                if ("#" != map[pRow - 1][pCol]) {                    map[pRow][pCol] = " ";                    pRow--;                    map[pRow][pCol] = "R";                }                break;            case "a":                if ("#" != map[pRow][pCol - 1]) {                    map[pRow][pCol] = " ";                    pCol--;                    map[pRow][pCol] = "R";                }                break;            case "d":                if ("#" != map[pRow][pCol + 1]) {                    map[pRow][pCol] = " ";                    pCol++;                    map[pRow][pCol] = "R";                }                break;        }        // 6.3重新輸出行走之后的地圖        printMap(map, row, col);    }    printf("你太牛X了/n");    printf("想挑戰(zhàn)自己,請購買完整版本/n");    return 0;}/** * @brief printMap * @param map 需要打印的二維數(shù)組 * @param row 二維數(shù)組的行數(shù) * @param col 二維數(shù)組的列數(shù) */void printMap(char map[6][7] , int row, int col){    // 為了保證窗口的干凈整潔, 每次打印都先清空上一次的打印    system("cls");    for (int i = 0; i < row; i++) {        for (int j = 0; j < col; j++) {            printf("%c", map[i][j]);        }        printf("/n");    }}

注釋的分類

  • 單行注釋

    • // 被注釋內(nèi)容
    • 使用范圍:任何地方都可以寫注釋:函數(shù)外面、里面,每一條語句后面
    • 作用范圍: 從第二個斜線到這一行末尾
    • 快捷鍵:Ctrl+/
  • 多行注釋

    • /* 被注釋內(nèi)容 */
    • 使用范圍:任何地方都可以寫注釋:函數(shù)外面、里面,每一條語句后面
    • 作用范圍: 從第一個/*到最近的一個*/

注釋的注意點

  • 單行注釋可以嵌套單行注釋、多行注釋
// 南哥 // it666.com// /* 江哥 */// 帥哥
  • 多行注釋可以嵌套單行注釋
/*// 作者:LNJ// 描述:第一個C語言程序作用:這是一個主函數(shù),C程序的入口點 */
  • 多行注釋***不能***嵌套多行注釋
/* 哈哈哈     /*嘻嘻嘻*/ 呵呵呵 */

注釋的應(yīng)用場景

  • 思路分析
/*     R代表一個人     #代表一堵墻//   0123456     ####### // 0     #   #   // 1     #R ## # // 2     #   # # // 3     ##    # // 4     ####### // 5     分析:     >1.保存地圖(二維數(shù)組)     >2.輸出地圖     >3.操作R前進(jìn)(控制小人行走)      3.1.接收用戶輸入(scanf/getchar)      w(向上走) s(向下走) a(向左走) d(向右走)      3.2.判斷用戶的輸入,控制小人行走         3.2.1.替換二維數(shù)組中保存的數(shù)據(jù)             (                1.判斷是否可以修改(如果不是#就可以修改)                2.修改現(xiàn)有位置為空白                3.修改下一步為R             )      3.3.輸出修改后的二維數(shù)組     4.判斷用戶是否走出出口*/
  • 對變量進(jìn)行說明
// 2.計算地圖行數(shù)和列數(shù)int row = sizeof(map)/sizeof(map[0]);int col = sizeof(map[0])/ sizeof(map[0][0]);
  • 對函數(shù)進(jìn)行說明
/** * @brief printMap * @param map 需要打印的二維數(shù)組 * @param row 二維數(shù)組的行數(shù) * @param col 二維數(shù)組的列數(shù) */void printMap(char map[6][7] , int row, int col){    system("cls");    for (int i = 0; i < row; i++) {        for (int j = 0; j < col; j++) {            printf("%c", map[i][j]);        }        printf("/n");    }}
  • 多實現(xiàn)邏輯排序
    // 1.定義二維數(shù)組保存迷宮地圖    char map[6][7] = {        {"#", "#", "#", "#", "#", "#", "#"},        {"#", " ", " ", " ", "#" ," ", " "},        {"#", "R", " ", "#", "#", " ", "#"},        {"#", " ", " ", " ", "#", " ", "#"},        {"#", "#", " ", " ", " ", " ", "#"},        {"#", "#", "#", "#", "#", "#", "#"}    };    // 2.計算地圖行數(shù)和列數(shù)    int row = sizeof(map)/sizeof(map[0]);    int col = sizeof(map[0])/ sizeof(map[0][0]);    // 3.輸出地圖    printMap(map, row, col);    // 4.定義變量記錄人物位置    int pRow = 2;    int pCol = 1;    // 5.定義變量記錄出口的位置    int endRow = 1;    int endCol = 6;    // 6.控制人物行走    while ("R" != map[endRow][endCol]) {        ... ...    }

使用注釋的好處

  • 注釋是一個程序員必須要具備的良好習(xí)慣
  • 幫助開發(fā)人員整理實現(xiàn)思路
  • 解釋說明程序, 提高程序的可讀性
    • 初學(xué)者編寫程序可以養(yǎng)成習(xí)慣:先寫注釋再寫代碼
    • 將自己的思想通過注釋先整理出來,在用代碼去體現(xiàn)
    • 因為代碼僅僅是思想的一種體現(xiàn)形式而已

什么是關(guān)鍵字?

  • 關(guān)鍵字,也叫作保留字。是指一些被C語言賦予了特殊含義的單詞
  • 關(guān)鍵字特征:
    • 全部都是小寫
    • 在開發(fā)工具中會顯示特殊顏色
  • 關(guān)鍵字注意點:
    • 因為關(guān)鍵字在C語言中有特殊的含義, 所以不能用作變量名、函數(shù)名等
  • C語言中一共有32個關(guān)鍵字
12345678
charshortintlongfloatdoubleifelse
returndowhileforswitchcasebreakcontinue
defaultgotosizeofautoregisterstaticexternunsigned
signedtypedefstructenumunionvoidconstvolatile

這些不用專門去記住,用多了就會了。在編譯器里都是有特殊顏色的。 我們用到時候會一個一個講解這個些關(guān)鍵字怎么用,現(xiàn)在瀏覽下,有個印象就OK了


關(guān)鍵字分類

什么是標(biāo)識符?

  • 從字面上理解,就是用來標(biāo)識某些東西的符號,標(biāo)識的目的就是為了將這些東西區(qū)分開來
  • 其實標(biāo)識符的作用就跟人類的名字差不多,為了區(qū)分每個人,就在每個人出生的時候起了個名字
  • C語言是由函數(shù)構(gòu)成的,一個C程序中可能會有多個函數(shù),為了區(qū)分這些函數(shù),就給每一個函數(shù)都起了個名稱, 這個名稱就是標(biāo)識符
  • 綜上所述: 程序員在程序中給函數(shù)、變量等起名字就是標(biāo)識符

標(biāo)識符命名規(guī)則

  • 只能由字母(a~z、 A~Z)、數(shù)字、下劃線組成
  • 不能包含除下劃線以外的其它特殊字符串
  • 不能以數(shù)字開頭
  • 不能是C語言中的關(guān)鍵字
  • 標(biāo)識符嚴(yán)格區(qū)分大小寫, test和Test是兩個不同的標(biāo)識符

練習(xí)

  • 下列哪些是合法的標(biāo)識符
fromNo22from#22my_Booleanmy-Boolean2ndObjGUIlnj
Mike2jack江哥_testtest!32haha(da)ttjack_rosejack&rose

標(biāo)識符命名規(guī)范

  • 見名知意,能夠提高代碼的可讀性
  • 駝峰命名,能夠提高代碼的可讀性
    • 駝峰命名法就是當(dāng)變量名或函數(shù)名是由多個單詞連接在一起,構(gòu)成標(biāo)識符時,第一個單詞以小寫字母開始;第二個單詞的首字母大寫.
    • 例如: myFirstName、myLastName這樣的變量名稱看上去就像駝峰一樣此起彼伏

什么是數(shù)據(jù)?

  • 生活中無時無刻都在跟數(shù)據(jù)打交道

    • 例如:人的體重、身高、收入、性別等數(shù)據(jù)等
  • 在我們使用計算機的過程中,也會接觸到各種各樣的數(shù)據(jù)

    • 例如: 文檔數(shù)據(jù)、圖片數(shù)據(jù)、視頻數(shù)據(jù)等

數(shù)據(jù)分類

  • 靜態(tài)的數(shù)據(jù)

    • 靜態(tài)數(shù)據(jù)是指一些永久性的數(shù)據(jù),一般存儲在硬盤中。硬盤的存儲空間一般都比較大,現(xiàn)在普通計算機的硬盤都有500G左右,因此硬盤中可以存放一些比較大的文件
    • 存儲的時長:計算機關(guān)閉之后再開啟,這些數(shù)據(jù)依舊還在,只要你不主動刪掉或者硬盤沒壞,這些數(shù)據(jù)永遠(yuǎn)都在
    • 哪些是靜態(tài)數(shù)據(jù):靜態(tài)數(shù)據(jù)一般是以文件的形式存儲在硬盤上,比如文檔、照片、視頻等。
  • 動態(tài)的數(shù)據(jù)

    • 動態(tài)數(shù)據(jù)指在程序運行過程中,動態(tài)產(chǎn)生的臨時數(shù)據(jù),一般存儲在內(nèi)存中。內(nèi)存的存儲空間一般都比較小,現(xiàn)在普通計算機的內(nèi)存只有8G左右,因此要謹(jǐn)慎使用內(nèi)存,不要占用太多的內(nèi)存空間
    • 存儲的時長:計算機關(guān)閉之后,這些臨時數(shù)據(jù)就會被清除
    • 哪些是動態(tài)數(shù)據(jù):當(dāng)運行某個程序(軟件)時,整個程序就會被加載到內(nèi)存中,在程序運行過程中,會產(chǎn)生各種各樣的臨時數(shù)據(jù),這些臨時數(shù)據(jù)都是存儲在內(nèi)存中的。當(dāng)程序停止運行或者計算機被強制關(guān)閉時,這個程序產(chǎn)生的所有臨時數(shù)據(jù)都會被清除。
  • 既然硬盤的存儲空間這么大,為何不把所有的應(yīng)用程序加載到硬盤中去執(zhí)行呢?

    • 主要***原因就是內(nèi)存的訪問速度比硬盤快N倍***

  • 靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)的相互轉(zhuǎn)換
    • 也就是從磁盤加載到內(nèi)存
  • 動態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù)的相互轉(zhuǎn)換
    • 也就是從內(nèi)存保存到磁盤
  • 數(shù)據(jù)的計量單位
    • 不管是靜態(tài)還是動態(tài)數(shù)據(jù),都是0和1組成的
    • 數(shù)據(jù)越大,包含的0和1就越多
1 B(Byte字節(jié)) = 8 bit(位)// 00000000 就是一個字節(jié)// 111111111 也是一個字節(jié)// 10101010 也是一個字節(jié)// 任意8個0和1的組合都是一個字節(jié)1 KB(KByte) = 1024 B1 MB = 1024 KB1 GB = 1024 MB1 TB = 1024 GB

C語言數(shù)據(jù)類型

  • 作為程序員, 我們最關(guān)心的是內(nèi)存中的動態(tài)數(shù)據(jù),因為我們寫的程序就是在內(nèi)存中運行的
  • 程序在運行過程中會產(chǎn)生各種各樣的臨時數(shù)據(jù),為了方便數(shù)據(jù)的運算和操作, C語言對這些數(shù)據(jù)進(jìn)行了分類, 提供了豐富的數(shù)據(jù)類型
  • C語言中有4大類數(shù)據(jù)類型:基本類型、構(gòu)造類型、指針類型、空類型


什么是常量?

  • "量"表示數(shù)據(jù)。常量,則表示一些固定的數(shù)據(jù),也就是不能改變的數(shù)據(jù)
  • 就好比現(xiàn)實生活中生男生女一樣, 生下來是男孩永遠(yuǎn)都是男孩, 生下來是女孩就永遠(yuǎn)都是女孩, 所以性別就是現(xiàn)實生活中常量的一種體現(xiàn)
    • 不要和江哥吹牛X說你是泰國來的, 如果你真的來自泰國, 我只能說你贏了

常量的類型

  • 整型常量

    • 十進(jìn)制整數(shù)。例如:666,-120, 0
    • 八進(jìn)制整數(shù),八進(jìn)制形式的常量都以0開頭。例如:0123,也就是十進(jìn)制的83;-011,也就是十進(jìn) 制的-9
    • 十六進(jìn)制整數(shù),十六進(jìn)制的常量都是以0x開頭。例如:0x123,也就是十進(jìn)制的291
    • 二進(jìn)制整數(shù),逢二進(jìn)一 0b開頭。例如: 0b0010,也就是十進(jìn)制的2
  • 實型常量

    • 小數(shù)形式
      • 單精度小數(shù):以字母f或字母F結(jié)尾。例如:0.0f、1.01f
      • 雙精度小數(shù):十進(jìn)制小數(shù)形式。例如:3.14、 6.66
      • 默認(rèn)就是雙精度
      • 可以沒有整數(shù)位只有小數(shù)位。例如: .3、 .6f
    • 指數(shù)形式
      • 以冪的形式表示, 以字母e或字母E后跟一個10為底的冪數(shù)
        • 上過初中的都應(yīng)該知道

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/120967.html

相關(guān)文章

發(fā)表評論

0條評論

閱讀需要支付1元查看
<