C語言從入門到精通保姆級(jí)教程(2021版上)
[導(dǎo)讀]哈嘍,大家好,我是瓜哥,致力于為大家分享互聯(lián)網(wǎng)各領(lǐng)域干貨。這篇文章可以說是一本書了,排版,碼字耗費(fèi)了瓜哥很長的時(shí)間,10W字C語言從入門到精通保姆級(jí)教程2021年版,覺得有價(jià)值記得一鍵三連支持。目錄計(jì)算機(jī)常識(shí)什么是計(jì)算機(jī)程序?什么是計(jì)算機(jī)語言?常見的計(jì)算機(jī)語言類型有哪些?什么是C...
哈嘍,大家好,我是瓜哥,致力于為大家分享互聯(lián)網(wǎng)各領(lǐng)域干貨。這篇文章可以說是一本書了,排版,碼字耗費(fèi)了瓜哥很長的時(shí)間,
10W 字 C 語言從入門到精通保姆級(jí)教程2021年版
,覺得有價(jià)值記得一鍵三連
支持。目錄
- 計(jì)算機(jī)常識(shí)
- 什么是計(jì)算機(jī)程序?
- 什么是計(jì)算機(jī)語言 ?
- 常見的計(jì)算機(jī)語言類型有哪些?
- 什么是C語言?
- C語言歷史
- C語言標(biāo)準(zhǔn)
- C語言現(xiàn)狀
- 為什么要學(xué)習(xí)C語言?
- 如何學(xué)好C語言
- 工欲善其事必先利其器
- 編寫C語言程序用什么工具 ?
- 什么是Qt Creator ?
- Qt Creator安裝
- 什么是環(huán)境變量?
- 為什么要配置系統(tǒng)變量,不配置用戶變量
- Qt Creator快捷鍵
- 如何創(chuàng)建C語言程序
- 如何創(chuàng)建C語言文件
- C語言程序組成
- 函數(shù)定義格式
- 如何執(zhí)行定義好的函數(shù)
- 如何運(yùn)行編寫好的程序
- main函數(shù)注意點(diǎn)及其它寫法
- C語言程序練習(xí)
- 初學(xué)者如何避免程序出現(xiàn)BUG
- 多語言對比
- 什么是注釋?
- 為什么要使用注釋?
- 注釋的分類
- 注釋的注意點(diǎn)
- 注釋的應(yīng)用場景
- 使用注釋的好處
- 什么是關(guān)鍵字?
- 關(guān)鍵字分類
- 什么是標(biāo)識(shí)符?
- 標(biāo)識(shí)符命名規(guī)則
- 練習(xí)
- 標(biāo)識(shí)符命名規(guī)范
- 什么是數(shù)據(jù)?
- 數(shù)據(jù)分類
- C語言數(shù)據(jù)類型
- 什么是常量?
- 常量的類型
- 什么是變量?
- 如何定義變量
- 如何使用變量?
- 變量的初始化
- 如何修改變量值?
- 變量之間的值傳遞
- 如何查看變量的值?
- 變量的作用域
- 變量內(nèi)存分析(簡單版)
- printf函數(shù)
- Scanf函數(shù)
- scanf運(yùn)行原理
- putchar和getchar
- 運(yùn)算符基本概念
- 運(yùn)算符分類
- 運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
- 算數(shù)運(yùn)算符
- 賦值運(yùn)算符
- 自增自減運(yùn)算符
- sizeof運(yùn)算符
- 逗號(hào)運(yùn)算符
- 關(guān)系運(yùn)算符
- 邏輯運(yùn)算符
- 三目運(yùn)算符
- 類型轉(zhuǎn)換
- 階段練習(xí)
- 流程控制基本概念
- 選擇結(jié)構(gòu)
- 選擇結(jié)構(gòu)if
- 選擇結(jié)構(gòu)switch
- 循環(huán)結(jié)構(gòu)
- 循環(huán)結(jié)構(gòu)while
- 循環(huán)結(jié)構(gòu)do while
- 循環(huán)結(jié)構(gòu)for
- 四大跳轉(zhuǎn)
- 循環(huán)的嵌套
- 圖形打印
- 函數(shù)基本概念
- 函數(shù)的分類
- 函數(shù)的定義
- 函數(shù)的參數(shù)和返回值
- 函數(shù)的聲明
- main函數(shù)分析
- 遞歸函數(shù)(了解)
- 進(jìn)制基本概念
- 進(jìn)制轉(zhuǎn)換
- 十進(jìn)制小數(shù)轉(zhuǎn)換為二進(jìn)制小數(shù)
- 二進(jìn)制小數(shù)轉(zhuǎn)換為十進(jìn)制小數(shù)
- 原碼反碼補(bǔ)碼
- 位運(yùn)算符
- 變量內(nèi)存分析
- char類型內(nèi)存存儲(chǔ)細(xì)節(jié)
- 類型說明符
- short和long
- signed和unsigned
- 數(shù)組的基本概念
- 定義數(shù)組
- 初始化數(shù)組
- 數(shù)組的使用
- 數(shù)組的遍歷
- 數(shù)組長度計(jì)算方法
- 練習(xí)
- 數(shù)組內(nèi)部存儲(chǔ)細(xì)節(jié)
- 數(shù)組的越界問題
- 數(shù)組注意事項(xiàng)
- 數(shù)組和函數(shù)
- 數(shù)組元素作為函數(shù)參數(shù)
- 數(shù)組名作為函數(shù)參數(shù)
- 數(shù)組名作函數(shù)參數(shù)的注意點(diǎn)
- 計(jì)數(shù)排序(Counting Sort)
- 選擇排序
- 冒泡排序
- 插入排序
- 希爾排序
- 折半查找
- 進(jìn)制轉(zhuǎn)換(查表法)
- 二維數(shù)組
- 二維數(shù)組的定義
- 二維數(shù)組的初始化
- 二維數(shù)組的應(yīng)用場景
- 二維數(shù)組的遍歷和存儲(chǔ)
- 二維數(shù)組的遍歷
- 二維數(shù)組的存儲(chǔ)
- 二維數(shù)組與函數(shù)
- 二維數(shù)組作為函數(shù)參數(shù)注意點(diǎn)
- 作業(yè)
- 字符串的基本概念
- 字符串的初始化
- 字符串輸出
- 字符串常用方法
- 練習(xí)
- 字符串?dāng)?shù)組基本概念
- 指針基本概念
- 什么是指針
- 什么是指針變量
- 定義指針變量的格式
- 指針變量的初始化方法
- 訪問指針?biāo)赶虻拇鎯?chǔ)空間
- 指針類型
- 二級(jí)指針
- 練習(xí)
- 指針訪問數(shù)組元素
- 指針與字符串
- 指向函數(shù)指針
- 什么是結(jié)構(gòu)體
- 定義結(jié)構(gòu)體類型
- 定義結(jié)構(gòu)體變量
- 結(jié)構(gòu)體成員訪問
- 結(jié)構(gòu)體變量的初始化
- 結(jié)構(gòu)體類型作用域
- 結(jié)構(gòu)體數(shù)組
- 結(jié)構(gòu)體指針
- 結(jié)構(gòu)體內(nèi)存分析
- 結(jié)構(gòu)體變量占用存儲(chǔ)空間大小
- 結(jié)構(gòu)體嵌套定義
- 結(jié)構(gòu)體和函數(shù)
- 共用體
- 枚舉
- 全局變量和局部變量
- auto和register關(guān)鍵字
- static關(guān)鍵字
- extern關(guān)鍵字
- static與extern對函數(shù)的作用
- Qt Creator編譯過程做了什么?
- 計(jì)算機(jī)是運(yùn)算過程分析
- 預(yù)處理指令
- 預(yù)處理指令的概念
- 宏定義
- 帶參數(shù)的宏定義
- 條件編譯
- typedef關(guān)鍵字
- 宏定義與函數(shù)以及typedef區(qū)別
- const關(guān)鍵字
- 如何使用const?
- 內(nèi)存管理
- 進(jìn)程空間
- 棧內(nèi)存(Stack)
- 堆內(nèi)存(Heap)
- malloc函數(shù)
- free函數(shù)
- calloc函數(shù)
- realloc函數(shù)
- 鏈表
- 靜態(tài)鏈表
- 動(dòng)態(tài)鏈表
- 動(dòng)態(tài)鏈表頭插法
- 動(dòng)態(tài)鏈表尾插法
- 動(dòng)態(tài)鏈優(yōu)化
- 鏈表銷毀
- 鏈表長度計(jì)算
- 鏈表查找
- 鏈表刪除
- 作業(yè)
- 文件基本概念
- 文件的打開和關(guān)閉
- 一次讀寫一個(gè)字符
- 一次讀寫一行字符
- 一次讀寫一塊數(shù)據(jù)
- 讀寫結(jié)構(gòu)體
- 其它文件操作函數(shù)
計(jì)算機(jī)常識(shí)
- 什么是計(jì)算機(jī)?
- 顧名思義,就是能夠進(jìn)行數(shù)據(jù)運(yùn)算的機(jī)器(臺(tái)式電腦、筆記本電腦、平板電腦、智能手機(jī))
- 計(jì)算機(jī)_百度百科
- 計(jì)算機(jī)的發(fā)明者是誰 ?
- 關(guān)于電子計(jì)算機(jī)的發(fā)明者是誰這一問題,有好幾種答案:
- 1936年英國數(shù)學(xué)家圖靈首先提出了一種以程序和輸入數(shù)據(jù)相互作用產(chǎn)生輸出的計(jì)算機(jī)構(gòu)想,后人將這種機(jī)器命名為通用圖靈計(jì)算機(jī)
- 1938年克蘭德·楚澤發(fā)明了首臺(tái)采用繼電器進(jìn)行工作的計(jì)算機(jī),這臺(tái)計(jì)算機(jī)命名為Z1,但是繼電器是機(jī)械式的,并不是完全的電子器材
- 1942年阿坦那索夫和貝利發(fā)明了首臺(tái)采用真空管*的計(jì)算機(jī),這臺(tái)計(jì)算機(jī)命名為ABC
- 1946年ENIAC誕生,它擁有了今天計(jì)算機(jī)的主要結(jié)構(gòu)和功能,是通用計(jì)算機(jī)
現(xiàn)在世界上公認(rèn)的第一臺(tái)現(xiàn)代電子計(jì)算機(jī)是1946年在美國賓夕法尼亞大學(xué)誕生的ENIAC(Electronic Numerical Integrator And Calculator)
- 計(jì)算機(jī)特點(diǎn)是什么?
- 計(jì)算機(jī)是一種電器, 所以計(jì)算機(jī)只能識(shí)別兩種狀態(tài), 一種是通電一種是斷電
- 正是因?yàn)槿绱? 最初ENIAC的程序是由很多開關(guān)和連接電線來完成的。但是這樣導(dǎo)致改動(dòng)一次程序要花很長時(shí)間(需要人工重新設(shè)置很多開關(guān)的狀態(tài)和連接線)
- 為了提高效率,工程師們想能不能把程序和數(shù)據(jù)都放在存儲(chǔ)器中, 數(shù)學(xué)家馮·諾依曼將這個(gè)思想以數(shù)學(xué)語言系統(tǒng)闡述,提出了存儲(chǔ)程序計(jì)算機(jī)模型(這是所謂的馮·諾依曼機(jī))
- 那利用數(shù)學(xué)語言如何表示計(jì)算機(jī)能夠識(shí)別的通電和斷電兩種狀態(tài)呢?
- 非常簡單用0和1表示即可
- 所以計(jì)算機(jī)能識(shí)別的所有指令都是由0和1組成的
- 所以計(jì)算機(jī)中存儲(chǔ)和操作的數(shù)據(jù)也都是由0和1組成的
0和1更準(zhǔn)確的是應(yīng)該是高電平和低電平, 但是這個(gè)不用了解, 只需要知道計(jì)算機(jī)只能識(shí)別0和1以及存儲(chǔ)的數(shù)據(jù)都是由0和1組成的即可。
什么是計(jì)算機(jī)程序?
- 計(jì)算機(jī)程序是為了告訴計(jì)算機(jī)"做某件事或解決某個(gè)問題"而用"計(jì)算機(jī)語言編寫的命令集合(語句)
- 只要讓計(jì)算機(jī)執(zhí)行這個(gè)程序,計(jì)算機(jī)就會(huì)自動(dòng)地、有條不紊地進(jìn)行工作,計(jì)算機(jī)的一切操作都是由程序控制的,離開程序,計(jì)算機(jī)將一事無成
- 現(xiàn)實(shí)生活中你如何告訴別人如何做某件事或者解決某個(gè)問題?
- 通過人能聽懂的語言: 張三你去樓下幫我買一包煙, 然后順便到快遞箱把我的快遞也帶上來
- 其實(shí)我們通過人能聽懂的語言告訴別人做某件事就是在發(fā)送一條條的指令
- 計(jì)算機(jī)中也一樣, 我們可以通過計(jì)算機(jī)語言告訴計(jì)算機(jī)我們想做什么, 每做一件事情就是一條指令, 一條或多條指令的集合我們就稱之為一個(gè)計(jì)算機(jī)程序
什么是計(jì)算機(jī)語言 ?
- 在日常生活、工作中, 語言是人們交流的工具
- 中國人和中國人交流,使用中文語言
- 美國人和美國人交流,使用英文語言
- 人想要和計(jì)算機(jī)交流,使用計(jì)算機(jī)語言
- 可以看出在日常生活、工作中,人們使用的語言種類很多
- 如果一個(gè)很牛人可能同時(shí)掌握了中文語言和英文語言, 那么想要和這個(gè)人交流既可以使用中文語言,也可以使用英文語言
- 計(jì)算機(jī)其實(shí)就是一個(gè)很牛的人, 計(jì)算機(jī)同時(shí)掌握了幾十門甚至上百門語言, 所以我們只要使用任何一種計(jì)算機(jī)已經(jīng)掌握的語言就可以和計(jì)算機(jī)交流
常見的計(jì)算機(jī)語言類型有哪些?
- 機(jī)器語言
- 所有的代碼里面只有0和1, 0表示不加電,1表示加電(紙帶存儲(chǔ)時(shí) 1有孔,0沒孔)
- 優(yōu)點(diǎn):直接對硬件產(chǎn)生作用,程序的執(zhí)行效率非常非常高
- 缺點(diǎn):指令又多又難記、可讀性差、無可移植性
- 匯編語言
- 符號(hào)化的機(jī)器語言,用一個(gè)符號(hào)(英文單詞、數(shù)字)來代表一條機(jī)器指令
- 優(yōu)點(diǎn):直接對硬件產(chǎn)生作用,程序的執(zhí)行效率非常高、可讀性稍好
- 缺點(diǎn):符號(hào)非常多和難記、無可移植性
- 高級(jí)語言
- 非常接近自然語言的高級(jí)語言,語法和結(jié)構(gòu)類似于普通英文
- 優(yōu)點(diǎn):簡單、易用、易于理解、遠(yuǎn)離對硬件的直接操作、有可移植性
- 缺點(diǎn):有些高級(jí)語言寫出的程序執(zhí)行效率并不
- 對比(利用3種類型語言編寫1 1)
1 1
MOV AX, 1 ADD AX, 1
10111000 00000001 00000000 00000101 00000001 00000000
- 機(jī)器語言
- 匯編語言
- 高級(jí)語言
什么是C語言?
- C語言是一種用于和計(jì)算機(jī)交流的高級(jí)語言, 它既具有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)
- 非常接近自然語言
- 程序的執(zhí)行效率非常高
- C語言是所有編程語言中的經(jīng)典,很多高級(jí)語言都是從C語言中衍生出來的,
- 例如:C 、C#、Object-C、Java、Go等等
- C語言是所有編程語言中的經(jīng)典,很多著名的系統(tǒng)軟件也是C語言編寫的
- 幾乎所有的操作系統(tǒng)都是用C語言編寫的
- 幾乎所有的計(jì)算機(jī)底層軟件都是用C語言編寫的
- 幾乎所有的編輯器都是C語言編寫的
C語言歷史
- 最早的高級(jí)語言:FORTRAN-->ALGOL-->CPL-->BCPL-->C-->C 等
“初,世間無語言,僅電路與連線。及大牛出,天地開,始有 FORTRAN、 LISP、ALGOL 隨之, 乃有萬種語”
- 1963年英國劍橋大學(xué)推出了CPL(Combined Programming Langurage)語言。CPL語言在ALGOL 60的基礎(chǔ)上接近硬件一些,但規(guī)模比較大,難以實(shí)現(xiàn)
- 1967年英國劍橋大學(xué)的 Matin Richards(理查茲)對CPL語言做了簡化,推出了 BCPL (Base Combined Programming Langurage)語言
- 1970年美國貝爾實(shí)驗(yàn)室的 Ken Thompson(肯·湯普遜) 以 BCPL 語言為基礎(chǔ),又作了進(jìn)一步的簡化,設(shè)計(jì)出了很簡單的而且很接近硬件的 B 語言(取BCPL的第一個(gè)字母),并用B語言寫出了第一個(gè) UNIX 操作系統(tǒng)。但B語言過于簡單,功能有限
- 1972年至1973年間,貝爾實(shí)驗(yàn)室的 Dennis.Ritchie(丹尼斯·里奇) 在 B語言的基礎(chǔ)上設(shè)計(jì)出了C語言(取BCPL的第二個(gè)字母)。C語言即保持 BCPL 語言和B語言的優(yōu)點(diǎn)(精練、接近硬件),又克服了他們的缺點(diǎn)(過于簡單,數(shù)據(jù)無類型等)
C語言標(biāo)準(zhǔn)
- 1983年美國國家標(biāo)準(zhǔn)局(American National Standards Institute,簡稱ANSI)成立了一個(gè)委員會(huì),開始制定C語言標(biāo)準(zhǔn)的工作
- 1989年C語言標(biāo)準(zhǔn)被批準(zhǔn),這個(gè)版本的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)。這個(gè)標(biāo)準(zhǔn)通常即C11,它是C程序語言的現(xiàn)行標(biāo)準(zhǔn)
C語言現(xiàn)狀
- 年度編程語言
- 該獎(jiǎng)項(xiàng)頒發(fā)給了一年中最熱門的編程語言
- 編程語言排行榜查看
為什么要學(xué)習(xí)C語言?
- 40多年經(jīng)久不衰
- 了解操作系統(tǒng)、編譯原理、數(shù)據(jù)結(jié)構(gòu)與算法等知識(shí)的最佳語言
- 了解其它語言底層實(shí)現(xiàn)原理必備語言
- 基礎(chǔ)語法與其它高級(jí)語言類似,學(xué)會(huì)C語言之后再學(xué)習(xí)其它語言事半功倍,且知根知底
當(dāng)你想了解底層原理時(shí),你才會(huì)發(fā)現(xiàn)后悔當(dāng)初沒有學(xué)習(xí)C語言 當(dāng)你想學(xué)習(xí)一門新的語言時(shí), 你才會(huì)發(fā)現(xiàn)后悔當(dāng)初沒有學(xué)習(xí)C語言 當(dāng)你使用一些高級(jí)框架、甚至系統(tǒng)框架時(shí)發(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í)本套課程之后 |
---|---|---|
- 如何達(dá)到這樣的效果
工欲善其事必先利其器
編寫C語言程序用什么工具 ?
- 記事本(開發(fā)效率低)
- Vim(初學(xué)者入門門檻高)
- VSCode(不喜歡)
- eclipse(不喜歡)
- CLion(深愛, 但收費(fèi))
- Xcode(逼格高, 但得有蘋果電腦)
- Qt Creator(開源免費(fèi),跨平臺(tái)安裝和運(yùn)行)
什么是Qt Creator ?
- Qt Creator 是一款新的輕量級(jí)集成開發(fā)環(huán)境(IDE)。它能夠跨平臺(tái)運(yùn)行,支持的系統(tǒng)包括 Windows、Linux(32 位及 64 位)以及 Mac OS X
- Qt Creator 的設(shè)計(jì)目標(biāo)是使開發(fā)人員能夠利用 Qt 這個(gè)應(yīng)用程序框架更加快速及輕易的完成開發(fā)任務(wù)
- 開源免費(fèi), 簡單易用, 能夠滿足學(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/
- 以管理身份運(yùn)行離線安裝包
- 下一步,下一步,下一步,等待ing...
- 注意安裝路徑中最好不要出現(xiàn)中文
- 對于初學(xué)者而言全選是最簡單的方式(重點(diǎn)!!!)
- 配置Qt Creator開發(fā)環(huán)境變量
你的安裝路徑\5.11.0\mingw53_32\bin 你的安裝路徑\Tools\mingw530_32\bin
- 啟動(dòng)安裝好的Qt Creator
- 非全選安裝到此為止, 全選安裝繼續(xù)往下看出現(xiàn)這個(gè)錯(cuò)誤, 忽略這個(gè)錯(cuò)誤即可
- 等待安裝完畢之后解決剛才的錯(cuò)誤找到安裝目錄下的strawberry.msi,雙擊運(yùn)行
什么是環(huán)境變量?
- 打開我們添加環(huán)境變量的兩個(gè)目錄, 不難發(fā)現(xiàn)里面大部分都是.exe的可執(zhí)行程序
- 如果我們不配置環(huán)境變量, 那么每次我們想要使用這些"可執(zhí)行程序"都必須"先找到這些應(yīng)用程序?qū)?yīng)的文件夾"才能使用
- 為了方便我們在電腦上"任何地方"都能夠使用這些"可執(zhí)行程序", 那么我們就必須添加環(huán)境變量, 因?yàn)閃indows執(zhí)行某個(gè)程序的時(shí)候, 會(huì)先到"環(huán)境變量中Path指定的路徑中"去查找
為什么要配置系統(tǒng)變量,不配置用戶變量
- 用戶變量只針對使用這臺(tái)計(jì)算機(jī)指定用戶
- 一個(gè)計(jì)算機(jī)可以設(shè)置多個(gè)用戶, 不同的用戶用不同的用戶名和密碼
- 當(dāng)給計(jì)算機(jī)設(shè)置了多個(gè)用戶的時(shí)候,啟動(dòng)計(jì)算機(jī)的時(shí)候就會(huì)讓你選擇哪個(gè)用戶登錄
- 系統(tǒng)變量針對使用這臺(tái)計(jì)算機(jī)的所有用戶
- 也就是說設(shè)置了系統(tǒng)變量, 無論哪個(gè)用戶登錄這臺(tái)計(jì)算機(jī)都可以使用你配置好的工具
Qt Creator快捷鍵
- Qt Creator Keyboard Shortcuts(Documentation)[1]
- Qt Creator Keyboard Shortcuts(Wiki)[2]
如何創(chuàng)建C語言程序
- 這個(gè)世界上, 幾乎所有程序員入門的第一段代碼都是Hello World.
- 原因是當(dāng)年C語言的作者Dennis Ritchie(丹尼斯 里奇)在他的名著
中第一次引入, 傳為后世經(jīng)典, 其它語言亦爭相效仿, 以示敬意
如何創(chuàng)建C語言文件
C語言程序組成
- 手機(jī)有很多功能, "開機(jī)","關(guān)機(jī)","打電話","發(fā)短信","拍照"等等
- 手機(jī)中的每一個(gè)功能就相當(dāng)于C語言程序中的一個(gè)程序段(函數(shù))
- 眾多功能中總有一個(gè)會(huì)被先執(zhí)行,不可能多個(gè)功能一起執(zhí)行
- 想使用手機(jī)必須先執(zhí)行手機(jī)的開機(jī)功能
- 所以C語言程序也一樣,由眾多功能、眾多程序段組成, 眾多C語言程序段中總有一個(gè)會(huì)被先執(zhí)行, 這個(gè)先執(zhí)行的程序段我們稱之為"主函數(shù)"
- 一個(gè)C語言程序由多個(gè)"函數(shù)"構(gòu)成,每個(gè)函數(shù)有自己的功能
- 一個(gè)程序有且只有一個(gè)主函數(shù)
- 如果一個(gè)程序沒有主函數(shù),則這個(gè)程序不具備運(yùn)行能力
- 程序運(yùn)行時(shí)系統(tǒng)會(huì)自動(dòng)調(diào)用主函數(shù),而其它函數(shù)需要開發(fā)者手動(dòng)調(diào)用
- 主函數(shù)有固定書寫的格式和范寫
函數(shù)定義格式
- 主函數(shù)定義的格式:
- int 代表函數(shù)執(zhí)行之后會(huì)返回一個(gè)整數(shù)類型的值
- main 代表這個(gè)函數(shù)的名字叫做main
- () 代表這是一個(gè)函數(shù)
- {} 代表這個(gè)程序段的范圍
- return 0; 代表函數(shù)執(zhí)行完之后返回整數(shù)0
int?main()?{
????//?insert?code?here...
????return?0;
}
- 其它函數(shù)定義的格式
- int 代表函數(shù)執(zhí)行之后會(huì)返回一個(gè)整數(shù)類型的值
- call 代表這個(gè)函數(shù)的名字叫做call
- () 代表這是一個(gè)函數(shù)
- {} 代表這個(gè)程序段的范圍
- return 0; 代表函數(shù)執(zhí)行完之后返回整數(shù)0
int?call()?{
????return?0;
}
如何執(zhí)行定義好的函數(shù)
- 主函數(shù)(main)會(huì)由系統(tǒng)自動(dòng)調(diào)用, 但其它函數(shù)不會(huì), 所以想要執(zhí)行其它函數(shù)就必須在main函數(shù)中手動(dòng)調(diào)用
- call 代表找到名稱叫做call的某個(gè)東西
- () 代表要找到的名稱叫call的某個(gè)東西是一個(gè)函數(shù)
- ; ?代表調(diào)用函數(shù)的語句已經(jīng)編寫完成
- 所以call();代表找到call函數(shù), 并執(zhí)行call函數(shù)
int?main()?{
????call();
????return?0;
}
- 如何往屏幕上輸出內(nèi)容
- 并沒有告訴printf函數(shù),我們要往屏幕上輸出什么內(nèi)容
- 找不到printf函數(shù)的實(shí)現(xiàn)代碼
- 輸出內(nèi)容是一個(gè)比較復(fù)雜的操作, 所以系統(tǒng)提前定義好了一個(gè)專門用于輸出內(nèi)容的函數(shù)叫做printf函數(shù),我們只需要執(zhí)行系統(tǒng)定義好的printf函數(shù)就可以往屏幕上輸出內(nèi)容
- 但凡需要執(zhí)行一個(gè)函數(shù), 都是通過函數(shù)名稱 圓括號(hào)的形式來執(zhí)行
- 如下代碼的含義是: 當(dāng)程序運(yùn)行時(shí)系統(tǒng)會(huì)自動(dòng)執(zhí)行main函數(shù), 在系統(tǒng)自動(dòng)執(zhí)行main函數(shù)時(shí)我們手動(dòng)執(zhí)行了call函數(shù)和printf函數(shù)
- 經(jīng)過對代碼的觀察, 我們發(fā)現(xiàn)兩個(gè)問題
int?call(){
????return?0;
}
int?main(){
????call();
????printf();
????return?0;
}
- 如何告訴printf函數(shù)要輸出的內(nèi)容
- 將要輸出的內(nèi)容編寫到printf函數(shù)后面的圓括號(hào)中即可
- 注意: 圓括號(hào)中編寫的內(nèi)容必須用雙引號(hào)引起來
printf("hello?world\n");
- 如何找到printf函數(shù)的實(shí)現(xiàn)代碼
- 由于printf函數(shù)是系統(tǒng)實(shí)現(xiàn)的函數(shù), 所以想要使用printf函數(shù)必須在使用之前告訴系統(tǒng)去哪里可以找到printf函數(shù)的實(shí)現(xiàn)代碼
- #include
就是告訴系統(tǒng)可以去stdio這個(gè)文件中查找printf函數(shù)的聲明和實(shí)現(xiàn)
#include?
int?call(){
????return?0;
}
int?main(){
????call();
????printf("hello?world\n");
????return?0;
}
如何運(yùn)行編寫好的程序
- 方式1:
- 點(diǎn)擊小榔頭將"源代碼"編譯成"可執(zhí)行文件"
- 找到編譯后的源代碼, 打開終端(CMD)運(yùn)行可執(zhí)行文件
- 方式2
- 直接點(diǎn)擊Qt開發(fā)工具運(yùn)行按鈕
main函數(shù)注意點(diǎn)及其它寫法
- C語言中,每條完整的語句后面都必須以分號(hào)結(jié)尾
int?main(){
????printf("hello?world\n")?//?如果沒有分號(hào)編譯時(shí)會(huì)報(bào)錯(cuò)
????return?0;
}
int?main(){
????//?如果沒有分號(hào),多條語句合并到一行時(shí),?系統(tǒng)不知道從什么地方到什么地方是一條完整語句
????printf("hello?world\n")?return?0;
}
- C語言中除了注釋和雙引號(hào)引起來的地方以外都不能出現(xiàn)中文
int?main(){
????printf("hello?world\n");?//?這里的分號(hào)如果是中文的分號(hào)就會(huì)報(bào)錯(cuò)
????return?0;
}
- 一個(gè)C語言程序只能有一個(gè)main函數(shù)
int?main(){
????return?0;
}
int?main(){?//?編譯時(shí)會(huì)報(bào)錯(cuò),?重復(fù)定義
????return?0;
}
- 一個(gè)C語言程序不能沒有main函數(shù)
int?call(){?//?編譯時(shí)報(bào)錯(cuò),?因?yàn)橹挥衏all函數(shù),?沒有main函數(shù)
????return?0;
}
int?mian(){?//?編譯時(shí)報(bào)錯(cuò),?因?yàn)閙ain函數(shù)的名稱寫錯(cuò)了,還是相當(dāng)于沒有main函數(shù)
????return?0;
}
- main函數(shù)前面的int可以不寫或者換成void
#include?
main(){?//?不會(huì)報(bào)錯(cuò)
????printf("hello?world\n");
????return?0;
}
#include?
void?main(){??//?不會(huì)報(bào)錯(cuò)
????printf("hello?world\n");
????return?0;
}
- main函數(shù)中的return 0可以不寫
int?main(){?//?不會(huì)報(bào)錯(cuò)
????printf("hello?world\n");
}
- 多種寫法不報(bào)錯(cuò)的原因
- Turbo C
- Visual C(VC)
- GNU C(GCC)
- C語言最早的時(shí)候只是一種規(guī)范和標(biāo)準(zhǔn)(例如C89, C11等)
- 標(biāo)準(zhǔn)的推行需要各大廠商的支持和實(shí)施
- 而在支持的實(shí)施的時(shí)候由于各大廠商利益、理解等問題,導(dǎo)致了實(shí)施的標(biāo)準(zhǔn)不同,發(fā)生了變化
- 所以大家才會(huì)看到不同的書上書寫的格式有所不同, 有的返回int,有的返回void,有的甚至沒有返回值
- 所以大家只需要記住最標(biāo)準(zhǔn)的寫法即可, no zuo no die
#include?
int?main(){
????printf("hello?world\n");
????return?0;
}
Tips: 語法錯(cuò)誤:編譯器會(huì)直接報(bào)錯(cuò) 邏輯錯(cuò)誤:沒有語法錯(cuò)誤,只不過運(yùn)行結(jié)果不正確
C語言程序練習(xí)
- 編寫一個(gè)C語言程序,用至少2種方式在屏幕上輸出以下內(nèi)容
???***?***
??*********
???*******
????****
?????**
- 普通青年實(shí)現(xiàn)
printf("?***?***?\n");
printf("*********\n");
printf("?*******\n");
printf("??****\n");
printf("???**\n");
- 2B青年實(shí)現(xiàn)
printf("?***?***?\n*********\n?*******\n??****\n???**\n");
- 文藝青年實(shí)現(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
??????????┃????┃
??????????┃????┗━━━┓
??????????┃????????┣┓
??????????┃?????┏━━┛┛
??????????┗┓┓┏━┳┓┏┛
???????????┃┫┫?┃┫┫
???????????┗┻┛?┗┻┛
??????━━━━━━感覺萌萌噠━━━━━━
????????′′′′′′′′██′′′′′′′
????????′′′′′′′████′′′′′′
????????′′′′′████████′′′′
????????′′`′███????███′′′′′
????????′′′███?●??●?██′′′
????????′′′███??????██′′′′′
????????′′′███????██′??????????????????????項(xiàng)目:第一個(gè)C語言程序
????????′′██████??███′′′′′?????????????????語言:C語言
????????′██████????███′′???????????????????編輯器:Qt Creator
????????██████??????███′′′′????????????????版本控制:git-github
????????′′▓▓▓▓▓▓▓▓▓▓▓▓▓?′′?????????????????代碼風(fēng)格:江哥style
????????′′????▓▓▓▓▓▓▓▓▓?′′′′′??????????????
????????′.???′′▓▓▓▓▓▓▓▓?′′′′′??????????????
????????′.??′′′′▓▓▓▓▓▓▓????????????????????
????????..??.′′′′▓▓▓▓▓▓▓????????????????????
????????′??????????????????????????????????
????????′′′′′′′′′███████′′′′′??????????????
????????′′′′′′′′████████′′′′′′′
????????′′′′′′′█████████′′′′′′
????????′′′′′′██████████′′′′?????????????大部分人都在關(guān)注你飛的高不高,卻沒人在乎你飛的累不累,這就是現(xiàn)實(shí)!
????????′′′′′′██████████′′′?????????????????????我從不相信夢想,我,只,相,信,自,己!
????????′′′′′′′█████████′′
????????′′′′′′′█████████′′′
????????′′′′′′′′████████′′′′′
????????________?????
????????_________????
????????_________????
????????________??_??
????????_______??__??
????????_____???___??
????????_____??___??
????????____??____??
????????___??_____??
????????███____???
????????████____███
????????█?_███_?_█_███
——————————————————————————女神保佑,代碼無bug——————————————————————
多語言對比
- C語言
#include
int?main()?{
????printf("南哥帶你裝B帶你飛");
????return?0;
}
- C 語言
#include
using?namespace?std;
int?main()?{
????cout?<"南哥帶你裝B帶你飛"?<????return?0;
}
- OC語言
#import?
int?main()?{
????NSLog(@"南哥帶你裝B帶你飛");
????return?0;
}
- Java語言
class?Test
{
????public?static?viod?main()
????{
????????system.out.println("南哥帶你裝B帶你飛");
????}
}
- Go語言
package?main
import??"fmt"?//引入fmt庫
func?main()?{
????fmt.Println("南哥帶你裝B帶你飛")
}
什么是注釋?
- 注釋是在所有計(jì)算機(jī)語言中都非常重要的一個(gè)概念,從字面上看,就是注解、解釋的意思
- 注釋可以用來解釋某一段程序或者某一行代碼是什么意思,方便程序員之間的交流溝通
- 注釋可以是任何文字,也就是說可以寫中文
- 被注釋的內(nèi)容在開發(fā)工具中會(huì)有特殊的顏色
為什么要使用注釋?
- 沒有編寫任何注釋的程序
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?????????for?(int?j?=?0;?j?????????????printf("%c",?map[i][j]);
????????}
????????printf("\n");
????}
}
- 編寫了注釋的程序
/*
?????R代表一個(gè)人
?????#代表一堵墻
//???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.計(jì)算地圖行數(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?????????for?(int?j?=?0;?j?????????????printf("%c",?map[i][j]);
????????}
????????printf("\n");
????}
}
注釋的分類
- 單行注釋
- // 被注釋內(nèi)容
- 使用范圍:任何地方都可以寫注釋:函數(shù)外面、里面,每一條語句后面
- 作用范圍: 從第二個(gè)斜線到這一行末尾
- 快捷鍵:Ctrl /
- 多行注釋
- /* 被注釋內(nèi)容 */
- 使用范圍:任何地方都可以寫注釋:函數(shù)外面、里面,每一條語句后面
- 作用范圍: 從第一個(gè)/*到最近的一個(gè)*/
注釋的注意點(diǎn)
- 單行注釋可以嵌套單行注釋、多行注釋
//?南哥?//?公號(hào)代碼情緣
//?/*?江哥?*/
//?瓜哥
- 多行注釋可以嵌套單行注釋
/*
//?作者:LNJ
//?描述:第一個(gè)C語言程序作用:這是一個(gè)主函數(shù),C程序的入口點(diǎn)
?*/
- 多行注釋***不能***嵌套多行注釋
/*?
哈哈哈
?????/*嘻嘻嘻*/
?呵呵呵?
*/
注釋的應(yīng)用場景
- 思路分析
/*
?????R代表一個(gè)人
?????#代表一堵墻
//???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.計(jì)算地圖行數(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?????????for?(int?j?=?0;?j?????????????printf("%c",?map[i][j]);
????????}
????????printf("\n");
????}
}
- 多實(shí)現(xiàn)邏輯排序
????//?1.定義二維數(shù)組保存迷宮地圖
????char?map[6][7]?=?{
????????{'#',?'#',?'#',?'#',?'#',?'#',?'#'},
????????{'#',?'?',?'?',?'?',?'#'?,'?',?'?'},
????????{'#',?'R',?'?',?'#',?'#',?'?',?'#'},
????????{'#',?'?',?'?',?'?',?'#',?'?',?'#'},
????????{'#',?'#',?'?',?'?',?'?',?'?',?'#'},
????????{'#',?'#',?'#',?'#',?'#',?'#',?'#'}
????};
????//?2.計(jì)算地圖行數(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])?{
????????...?...
????}
使用注釋的好處
- 注釋是一個(gè)程序員必須要具備的良好習(xí)慣
- 幫助開發(fā)人員整理實(shí)現(xiàn)思路
- 解釋說明程序, 提高程序的可讀性
- 初學(xué)者編寫程序可以養(yǎng)成習(xí)慣:先寫注釋再寫代碼
- 將自己的思想通過注釋先整理出來,在用代碼去體現(xiàn)
- 因?yàn)榇a僅僅是思想的一種體現(xiàn)形式而已
什么是關(guān)鍵字?
- 關(guān)鍵字,也叫作保留字。是指一些被C語言賦予了特殊含義的單詞
- 關(guān)鍵字特征:
- 全部都是小寫
- 在開發(fā)工具中會(huì)顯示特殊顏色
- 關(guān)鍵字注意點(diǎn):
- 因?yàn)殛P(guān)鍵字在C語言中有特殊的含義, 所以不能用作變量名、函數(shù)名等
- C語言中一共有32個(gè)關(guān)鍵字
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
char | short | int | long | float | double | if | else |
return | do | while | for | switch | case | break | continue |
default | goto | sizeof | auto | register | static | extern | unsigned |
signed | typedef | struct | enum | union | void | const | volatile |
這些不用專門去記住,用多了就會(huì)了。在編譯器里都是有特殊顏色的。我們用到時(shí)候會(huì)一個(gè)一個(gè)講解這個(gè)些關(guān)鍵字怎么用,現(xiàn)在瀏覽下,有個(gè)印象就OK了
關(guān)鍵字分類
什么是標(biāo)識(shí)符?
- 從字面上理解,就是用來標(biāo)識(shí)某些東西的符號(hào),標(biāo)識(shí)的目的就是為了將這些東西區(qū)分開來
- 其實(shí)標(biāo)識(shí)符的作用就跟人類的名字差不多,為了區(qū)分每個(gè)人,就在每個(gè)人出生的時(shí)候起了個(gè)名字
- C語言是由函數(shù)構(gòu)成的,一個(gè)C程序中可能會(huì)有多個(gè)函數(shù),為了區(qū)分這些函數(shù),就給每一個(gè)函數(shù)都起了個(gè)名稱, 這個(gè)名稱就是標(biāo)識(shí)符
- 綜上所述: 程序員在程序中給函數(shù)、變量等起名字就是標(biāo)識(shí)符
標(biāo)識(shí)符命名規(guī)則
- 只能由字母(a~z、 A~Z)、數(shù)字、下劃線組成
- 不能包含除下劃線以外的其它特殊字符串
- 不能以數(shù)字開頭
- 不能是C語言中的關(guān)鍵字
- 標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫, test和Test是兩個(gè)不同的標(biāo)識(shí)符
練習(xí)
- 下列哪些是合法的標(biāo)識(shí)符
fromNo22 | from#22 | my_Boolean | my-Boolean | 2ndObj | GUI | lnj |
Mike2jack | 江哥 | _test | test!32 | haha(da)tt | jack_rose | jack
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀
倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5... 關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢... 關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì) |