最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

從C語言開始

2023-07-27 18:54 作者:數(shù)字雙碳王亮  | 我要投稿

1. 什么是語言,什么是C語言

語言就廣義而言,是采用一套具有共同處理規(guī)則來進(jìn)行表達(dá)的溝通指令,指令會以視覺、聲音或者觸覺方式來傳遞。嚴(yán)格來說,語言是指人類溝通所使用的指令-自然語言。

計算機語言是一種特殊的語言。因為它是用于人與計算機之間傳遞信息的,所以人和計算機都能“讀懂”。具體地說,一方面,人們要使用計算機語言指揮計算機完成某種特作,就必須對這種工作進(jìn)行特殊描述,所以它能夠被人們讀懂。另一方面,計算機必須按計算機語言描述來行動,從而完成其描述的特定工作,所以能夠被計算機“讀懂”。

軟件:一系列按照特定順序組織的計算機數(shù)據(jù)和指令的集合。

交互方式:

  • 自然交互界面:聲音控制,觸摸屏手勢識別
  • 圖形化界面:這種方式簡單直觀,使用者易于接受,容易上手操作。
  • 命令行方式:需要有一個控制臺,輸入特定的指令,讓計算機完成一些操作。較為麻煩,需要記錄住一些命令。

C語言是一門面向過程的計算機編程語言,與C++、C#、Java等面向?qū)ο缶幊陶Z言有所不同。C語言的設(shè)計目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、僅產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。C語言描述問題比匯編語言迅速、工作量小、可讀性好、易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語言相當(dāng)。C語言一般只比匯編語言代碼生成的目標(biāo)程序效率低10%-20%。因此,C語言可以編寫系統(tǒng)軟件。

2. 計算機基礎(chǔ)知識

計算機指令執(zhí)行流程


計算機結(jié)構(gòu)


二進(jìn)制

二進(jìn)制是計算技術(shù)中廣泛采用的一種數(shù)制。二進(jìn)制數(shù)據(jù)是用0和1兩個數(shù)碼來表示的數(shù)。它的基數(shù)為2,進(jìn)位規(guī)則是“逢二進(jìn)一”,借位規(guī)則是“借一當(dāng)二”。

十進(jìn)制 0 1 2 3 4 5 6 7 8 9 二進(jìn)制 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

電子計算機出現(xiàn)以后,使用電子管來表示十種狀態(tài)過于復(fù)雜,所以所有的電子計算機中只有兩種基本的狀態(tài),開和關(guān)。也就是說,電子管的兩種狀態(tài)決定了以電子管為基礎(chǔ)的電子計算機采用二進(jìn)制來表示數(shù)字和數(shù)據(jù)。

位(Bit):度量數(shù)據(jù)的最小單位

字節(jié)(Byte):最常用的基本單位,一個字節(jié)有8位

K 字節(jié) 1K = 1024 byte M(兆)字節(jié) 1M = 1024 K G(吉) 字節(jié) 1G = 1024 M T(太)字節(jié) 1T = 1024 G

十進(jìn)制 M=10, 數(shù)字集 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 二進(jìn)制 M=2 , 數(shù)字集 0, 1 八進(jìn)制 M=8 , 數(shù)字集 0, 1, 2, 3, 4, 5, 6, 7 十六進(jìn)制 M=16 ,數(shù)字集 0, … , 9, A, B, C, D, E, F

機器指令

機器指令(Machine Instructions)是CPU能直接識別并執(zhí)行的指令,它的表現(xiàn)形式是二進(jìn)制編碼。機器指令通常由操作碼和操作數(shù)兩部分組成,操作碼指出該指令所要完成的操作,即指令的功能,操作數(shù)指出參與運算的對象,以及運算結(jié)果所存放的位置等。


程序是為完成一項特定任務(wù)而用某種語言編寫的一組指令序列。

編譯器

編譯器就是將“一種語言(通常為高級語言)”翻譯為“另一種語言(通常為低級語言)”的程序。一個現(xiàn)代編譯器的主要工作流程:源代碼 (source code) → 預(yù)處理器 (preprocessor) → 編譯器 (compiler) → 目標(biāo)代碼 (object code) → 鏈接器 (Linker) → 可執(zhí)行程序 (executables)

語言的層次

不同語言 表達(dá)式 高級語言 A+B 匯編 Add AX,BX 機器語言 0000 0000 0000 1010

主流語言進(jìn)化史

機器語言→匯編→C→C++→C#,Java,Python,VB

C語言特點

優(yōu)點 缺點 代碼量小 編寫代碼實現(xiàn)周期長 執(zhí)行速度快 過于自由,經(jīng)驗不足易出錯 功能強大 對平臺庫依賴較多 編程自由 危險性高

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

C語言是有史以來最為重要的,最基礎(chǔ)的編程語言

  • 絕對重要的基石語言,Unix,Linux,Windows,JAVA,C++,C#底層實現(xiàn)都靠C
  • 學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),C++的基礎(chǔ)
  • 可以說,只要是運行的系統(tǒng),都可以用C寫

五大編程語言統(tǒng)治地位加強

Python、Java、C 和 C++,C# 是 TIOBE 編程語言榜的 Top 5 已經(jīng)有很長一段時間了,并且遠(yuǎn)遠(yuǎn)領(lǐng)先于其它語言。

C語言適用的領(lǐng)域

  • C語言的應(yīng)用極其廣泛,從網(wǎng)站后臺,到底層操作系統(tǒng),從多媒體應(yīng)用到大型網(wǎng)絡(luò)游戲,均可使用C語言來開發(fā)。
  • C語言可以寫網(wǎng)站后臺程序
  • C語言可以寫出絢麗的GUI界面
  • C語言可以專門針對某個主題寫出功能強大的程序庫,然后供其他程序方便使用,從而讓其他程序節(jié)省開發(fā)時間。
  • C語言可以寫出大型游戲的引擎。
  • C語言可以寫出另一個語言來。
  • C語言可以寫操作系統(tǒng)和驅(qū)動程序,并且只能用C語言編寫,Linux操作系統(tǒng)的全部源代碼都可以從網(wǎng)上得到,要深入了解操作系統(tǒng)的運行秘密,懂C語言,就能看懂。
  • 任何設(shè)備只要配置了微處理器,就都支持C語言。從家用電器到手機,都是由C語言技術(shù)來推動的。
  • ARM嵌入方式
  • 單片機
  • Arduino

學(xué)習(xí)C語言的理由

  • 當(dāng)掌握了C語言后,再去學(xué)習(xí)其他面向過程的語言,最多一個星期就能學(xué)會。
  • C語言已經(jīng)存在很多年了,它有廣泛的使用團體并且有大量的現(xiàn)成代碼可以利用。這就使大家能在過去程序的基礎(chǔ)上,快速和高效的實現(xiàn)自己的程序。

C語言的精髓

C語言僅有32個關(guān)鍵字,9種控制語句,卻能完成無數(shù)的功能。

數(shù)據(jù)類型關(guān)鍵字

a. 基本數(shù)據(jù)類型(5個)

  • void:聲明函數(shù)無返回值或無參數(shù),聲明無類型指針,顯式丟棄運算結(jié)果。
  • char:字符型類型數(shù)據(jù),屬于整型數(shù)據(jù)的一種。
  • int:整型數(shù)據(jù),通常為編譯器指定的機器字長。
  • float:單精度浮點型數(shù)據(jù),屬于浮點數(shù)據(jù)的一種。
  • double:雙精度浮點型數(shù)據(jù),屬于浮點數(shù)據(jù)的一種。

b. 類型修飾關(guān)鍵字(4個)

  • short:修飾int,短整型數(shù)據(jù),可省略被修飾的int。
  • long:修飾int,長整形數(shù)據(jù),可省略被修飾的int。
  • signed:修飾整型數(shù)據(jù),有符號數(shù)據(jù)類型。
  • unsigned:修飾整型數(shù)據(jù),無符號數(shù)據(jù)類型。

c. 復(fù)雜類型關(guān)鍵字(5個)

  • struct:結(jié)構(gòu)體聲明。
  • union:共用體聲明。
  • enum:枚舉聲明。
  • typedef:聲明類型別名。
  • sizeof:得到特定類型或特定類型變量的大小。

d. 存儲級別關(guān)鍵字(6個)

  • auto:指定為自動變量,由編譯器自動分配及釋放,通常在棧上分配。
  • static:指定為靜態(tài)變量,分配在靜態(tài)變量區(qū),修飾函數(shù)時,指定函數(shù)作用域為文件內(nèi)部。
  • register:指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數(shù)形參,建議編譯器通過寄存器而不是堆棧傳遞參數(shù)。
  • extern:指定對應(yīng)變量為外部變量,即在另外的目標(biāo)文件中定義,可以認(rèn)為是約定由另外文件聲明的對象的一個“引用“
  • const:與volatile合稱“cv特性”,指定變量不可被當(dāng)前線程/進(jìn)程改變(但有可能被系統(tǒng)或其他線程/進(jìn)程改變)。
  • volatile:與const合稱“cv特性”,指定變量的值有可能會被系統(tǒng)或其他進(jìn)程/線程改變,強制編譯器每次從內(nèi)存中取得該變量的值。

流程控制關(guān)鍵字

a. 跳轉(zhuǎn)結(jié)構(gòu)(4個)

  • return:用在函數(shù)體中,返回特定值(或者是void值,即不返回值)。
  • continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)。
  • break:跳出當(dāng)前循環(huán)或switch結(jié)構(gòu)。
  • goto:無條件跳轉(zhuǎn)語句。

b. 分支結(jié)構(gòu)(5個)

  • if:條件語句。
  • else:條件語句否定分支(與if連用)。
  • switch:開關(guān)語句(多重分支語句)。
  • case:開關(guān)語句中的分支標(biāo)記。
  • default:開關(guān)語句中的“其他”分治,可選。

c. 循環(huán)結(jié)構(gòu)(3個)

  • for:for循環(huán)結(jié)構(gòu),for(1;2;3)4;的執(zhí)行順序為1->2->4->3->2...循環(huán),其中2為循環(huán)條件。
  • do:do循環(huán)結(jié)構(gòu),do 1 while(2);的執(zhí)行順序是1->2->1...循環(huán),2為循環(huán)條件。
  • while:while循環(huán)結(jié)構(gòu),while(1) 2;的執(zhí)行順序是1->2->1...循環(huán),1為循環(huán)條件。
  • 以上循環(huán)語句,當(dāng)循環(huán)條件表達(dá)式為真則繼續(xù)循環(huán),為假則跳出循環(huán)。

34種運算符

  • 算術(shù)運算符:+ - * / % ++ --
  • 關(guān)系運算符:< <= == > >= !=
  • 邏輯運算符:! && ||
  • 位運算符 :<< >> ~ | ^ &
  • 賦值運算符:= 及其擴展
  • 條件運算符:?:
  • 逗號運算符:,
  • 指針運算符:* &
  • 求字節(jié)數(shù) :sizeof
  • 強制類型轉(zhuǎn)換:(類型)
  • 分量運算符:. ->
  • 下標(biāo)運算符:[]
  • 其它 :( ) -

4. 怎么學(xué)好C語言

  • 方向和目標(biāo)

    首先要確定為什么要學(xué)習(xí)計算機編程語言,為考試?為工作?為興趣?

    如果是為興趣學(xué)習(xí),興趣很容易轉(zhuǎn)易,熱情最容易消逝,興趣一開始比較濃,如何無功利長期堅持就比較難,所以在學(xué)習(xí)興趣中不段找到成就感就非常重要。

    如果是為工作,換一個行業(yè)或方向而學(xué)習(xí),最有效的方式還是培訓(xùn)。為換一個工作而學(xué)習(xí),動力和壓力應(yīng)該是比較大的。也容易在一開始就當(dāng)作一個技能,工作的技能來學(xué)習(xí)和操練。

    為提升工作效率而學(xué)習(xí),把編程的思維,工具和方法,應(yīng)用到不同的工作中,也是一個很大的學(xué)習(xí)動力,和能夠帶來成就感的地方。只是學(xué)習(xí)的時間相對要少很多。

  • 學(xué)習(xí)中最難的是什么?

    學(xué)習(xí)編程開發(fā)中最常見的問題:

    1、編程環(huán)境不會搭建

    編程學(xué)習(xí)的第一步就是搞定環(huán)境,包括開發(fā)環(huán)境,開發(fā)工具,運行環(huán)境,服務(wù)器等等。 要學(xué)會解決環(huán)境中遇到各種問題。

    2、知識點太多,前面學(xué)后面忘

    如學(xué)習(xí)C/C++開發(fā),涉及的內(nèi)容和知識就太多,對初學(xué)者來說首先是程序邏輯,然后面對的可能就是C語言三大巨頭(指針,數(shù)組,數(shù)據(jù)結(jié)構(gòu))等,C++的面向?qū)ο缶幊?,STL標(biāo)準(zhǔn)模板庫,還有圖形化編程等, 太多知識我們需要學(xué)習(xí)。 如果是自學(xué)的話,你可能才到嵌套循環(huán)就感覺到困難了,可能是到面向?qū)ο蟾杏X到難以理解,要放棄了。 所以一定要有長期作戰(zhàn)的思想,有打硬仗的準(zhǔn)備。

    3、代碼太多,不知道從哪里看起

    剛開始代碼少還容易,過不了多久,看網(wǎng)上的教程也好,下載的代碼也好,拿到的代碼很多了,不知道從哪里看起,不知道程序入口在哪里,不知道怎么去運行。 這個原因,就是練習(xí)太少,調(diào)試太少。很多同學(xué)在學(xué)習(xí)編程時,當(dāng)作知識來學(xué)習(xí),這是一個誤區(qū),應(yīng)該當(dāng)作技能來學(xué)習(xí),技能就需要反復(fù)練習(xí),訓(xùn)練。

    4、完全對著教程做的,就是運行不了

    明明是一模一樣的代碼,視頻中能運行出來,你的就是不行。原因還是環(huán)境和配置的問題。 當(dāng)然也有不細(xì)心的錯誤,如拼寫錯誤你沒有發(fā)現(xiàn)。

    5、錯誤解決不了,想放棄

    這是自學(xué)最大的障礙。編程的學(xué)習(xí),不像英語(外語)等語言類的學(xué)習(xí),可以通過反復(fù)重復(fù)得到提高,甚至可以跳過一兩課,都沒有關(guān)系。 如果長時間被卡殼,錯誤得不到解決,百度怎么查也不行,或者照著網(wǎng)上的還是解決不了,就是分分鐘想放棄。 其實,這就是老師的重要性。有老師在旁邊,可能就是稍微點撥一下,這個問題就過去,你也能馬上獲得到經(jīng)驗。當(dāng)然現(xiàn)在還可以利用網(wǎng)絡(luò)上的社群,網(wǎng)上的老師,遠(yuǎn)程協(xié)助,來解決你學(xué)習(xí)過程中遇到的那些稀奇古怪的問題。

    6、學(xué)了很久了,感覺還沒有入門

    練習(xí)不夠,項目不夠。 這是典型的把編程語言的學(xué)習(xí),當(dāng)作知識點來學(xué)習(xí)。做項目,就是要把所有知識點一個一個串起來,對你所學(xué)習(xí)的知識點,技能點都是一個應(yīng)用的檢驗。

    7、技術(shù)更新太快,感覺又要重頭開始學(xué)

    還是沒有把一門語言,一個技能吃透。掌握了一種語言后,對新的語言,框架掌握起來都不是一件難事。
  • 編程學(xué)習(xí)如何突破?

    語言方向,如果你現(xiàn)在開始學(xué)習(xí),不妨選擇學(xué)習(xí)起來更容易上手的,而且功能強大。

    coding coding coding

    就是多敲代碼,多練習(xí)

    要有實戰(zhàn)的項目

    項目也是增加你代碼量最有效的手段

  • 掌握一門編程語言的意義

    1. 編程學(xué)起來很苦,但也并不是完全一無是處??陀^地看,自學(xué)編程還是有很多好處。
    2. 掌握一門技術(shù)技能
    3. 培養(yǎng)學(xué)習(xí)能力
    4. 改變思維方式
    5. 學(xué)會快速迭代,不斷迭代,完善改進(jìn)產(chǎn)品的思路
    6. 享受沉浸專注的快樂
    7. 編程的學(xué)習(xí)不能靠碎片化的時間,一定需要大塊的時間安排。編程有助于提升你的專注度。
    8. 享受創(chuàng)造的快樂
    9. 會編程的人不會感覺枯燥和孤獨,他會創(chuàng)造一個世界出來。
    10. 鍛煉毅力和獨處能力
    11. 提高解決問題能力
    12. 提高面對挫折失敗的承受能力
  • 常用網(wǎng)站

    GitHub: Let’s build from here · GitHub

    百度一下,你就知道 (baidu.com)

5. 常用開發(fā)環(huán)境IDE

  • Visual Studio 2022

    Visual Studio: IDE and Code Editor for Software Developers and Teams (microsoft.com)


    下載運行VisualStudioSteup.exe,點擊是


    點擊繼續(xù)


    可能需要等一會時間


    進(jìn)入安裝界面


    現(xiàn)階段學(xué)習(xí)使用勾選以下就可以了。


    點擊安裝


    此時需要聯(lián)網(wǎng)安裝,安裝時間根據(jù)具體網(wǎng)速條件。


    重啟系統(tǒng),安裝成功了!


    點擊啟動


    可以用Microsoft登錄,或是以后再說。


  • Code Blocks

    Binary releases - Code::Blocks (codeblocks.org)


  • QT

    Embedded Software Development Tools & Cross Platform IDE | Qt Creator

  • Xcode

  • VI

6. HelloWorld?

用Visual Studio


下一步



右鍵新建


#include<stdio.h> void main() { printf("hello world!"); getchar();//等待 }

使用Code:Blocks

下載免安裝版本,

新建項目


默認(rèn)會創(chuàng)建一個main.c的文件


這里需要注意編譯器找不到,

Settings→Compiler→Toolchain executables


7. 其它系統(tǒng)下

Debain下,安裝c編譯器,切換管理員

apt install build-essential

安裝圖形界面

sudo apt install xorg

sudo apt install xfce4

修改遠(yuǎn)程端口

sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini

sudo echo xfce4-session>~/.xsession

sudo service xrdp restart

通過遠(yuǎn)程桌面進(jìn)系統(tǒng)

安裝gedit

sudo apt install gedit

sudo apt install wget

編寫第一個c語言程序


注意后綴名.c結(jié)尾

gcc -o c01 c01.c

通過gcc編譯

運行編譯后程序

./c01


Qt安裝

下載連接

Index of /qt/development_releases/online_installers/4.4/ | 清華大學(xué)開源軟件鏡像站 | Tsinghua Open Source Mirror

新版本安裝基本都是在線安裝,需要注冊賬號


從C語言開始的評論 (共 條)

分享到微博請遵守國家法律
本溪市| 集安市| 凤冈县| 望奎县| 桂林市| 依安县| 习水县| 吉木乃县| 仁寿县| 嵊州市| 洛扎县| 绍兴市| 高安市| 庄浪县| 察雅县| 阳原县| 油尖旺区| 祁连县| 昌图县| 崇仁县| 通山县| 曲周县| 海原县| 定西市| 新绛县| 梧州市| 论坛| 兴安盟| 民权县| 安化县| 霸州市| 平塘县| 常山县| 伊吾县| 宁晋县| 四川省| 福清市| 太原市| 濮阳县| 衡阳县| 江口县|