溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語(yǔ)言簡(jiǎn)單編程的方法是什么

發(fā)布時(shí)間:2021-10-26 11:27:05 來(lái)源:億速云 閱讀:190 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“C語(yǔ)言簡(jiǎn)單編程的方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C語(yǔ)言簡(jiǎn)單編程的方法是什么”吧!

C語(yǔ)言簡(jiǎn)單編程的方法是什么

我們將所有的 C 語(yǔ)言要素放置到一份易讀的備忘錄上。

1972 年,丹尼斯·里奇Dennis Ritchie任職于貝爾實(shí)驗(yàn)室Bell Labs,在幾年前,他和他的團(tuán)隊(duì)成員發(fā)明了 Unix 。在創(chuàng)建了一個(gè)經(jīng)久不衰的操作系統(tǒng)(至今仍在使用)之后,他需要一種好的方法來(lái)對(duì)這些 Unix 計(jì)算機(jī)編程,以便它們可用執(zhí)行新的任務(wù)。在現(xiàn)在看來(lái),這很奇怪,但在當(dāng)時(shí),編程語(yǔ)言相對(duì)較少,F(xiàn)ortran、Lisp、Algol 以及 B 語(yǔ)言都很流行,但是,對(duì)于貝爾實(shí)驗(yàn)室的研究員們想要做的事情來(lái)說(shuō),它們還是遠(yuǎn)遠(yuǎn)不夠的。丹尼斯·里奇表現(xiàn)出一種后來(lái)被稱(chēng)為程序員的主要特征的特質(zhì):創(chuàng)造了他自己的解決方案。他稱(chēng)之為 C 語(yǔ)言,并且在近 50 年后,它仍在廣泛的使用。

為什么你應(yīng)該學(xué)習(xí) C 語(yǔ)言

今天,有很多語(yǔ)言為程序員提供了比 C 語(yǔ)言更多的特性。最明顯的是 C++ 語(yǔ)言,這是一種以相當(dāng)露骨的方式命名的語(yǔ)言,它構(gòu)建在 C  語(yǔ)言之上,創(chuàng)建了一種很好的面向?qū)ο笳Z(yǔ)言。不過(guò),許多其它語(yǔ)言的存在是有充分理由的。計(jì)算機(jī)擅長(zhǎng)一致的重復(fù),因此任何可預(yù)見(jiàn)的東西都可以構(gòu)建在編程語(yǔ)言中,對(duì)程序員來(lái)說(shuō)這意味著更少的工作量。為什么在  C++ 語(yǔ)言中用一行語(yǔ)句就可以將一個(gè) int 轉(zhuǎn)換為一個(gè) long 時(shí)(long x = long(n);),還要在 C 語(yǔ)言用兩行語(yǔ)句呢?

然而,C 語(yǔ)言在今天仍然有用。

首先,C 語(yǔ)言是一種相當(dāng)簡(jiǎn)約和直接的語(yǔ)言。除了編程的基礎(chǔ)知識(shí)之外,并沒(méi)有很高級(jí)的概念,這很大程度上是因?yàn)?C  語(yǔ)言實(shí)際上就是現(xiàn)代編程語(yǔ)言的基礎(chǔ)之一。例如,C 語(yǔ)言的特性之一是數(shù)組,但是它不提供字典(除非你自己寫(xiě)一個(gè))。當(dāng)你學(xué)習(xí) C  語(yǔ)言時(shí),你會(huì)學(xué)習(xí)編程的基礎(chǔ)組成部分,它可以幫助你認(rèn)識(shí)到如今的編程語(yǔ)言的改進(jìn)及其的精心設(shè)計(jì)。

因?yàn)?C 語(yǔ)言是一種最小化的編程語(yǔ)言,你的應(yīng)用程序很可能會(huì)獲得性能上的提升,這在其它許多編程語(yǔ)言中是看不到的。當(dāng)你考慮你的代碼可以執(zhí)行多快的時(shí)候,很容易陷入錙銖必較的境地,因此,重要的是要問(wèn)清楚你是否需要為某一特定任務(wù)提供更多的速度。與 Python 或 Java 相比,使用 C 語(yǔ)言,你在每行代碼中需要糾結(jié)的地方更少。C 語(yǔ)言程序運(yùn)行很快。這是 Linux 內(nèi)核使用 C 語(yǔ)言編寫(xiě)的一個(gè)很好的理由。

最后,C 語(yǔ)言很容易入門(mén),特別是,如果你正在運(yùn)行 Linux,就已經(jīng)能運(yùn)行 C 語(yǔ)言代碼了,因?yàn)?Linux 系統(tǒng)包含 GNU C 庫(kù)(glibc)。為了編寫(xiě)和構(gòu)建 C 語(yǔ)言程序,你需要做的全部工作就是安裝一個(gè)編譯器,打開(kāi)一個(gè)文本編輯器,開(kāi)始編碼。

開(kāi)始學(xué)習(xí) C 語(yǔ)言

如果你正在運(yùn)行 Linux ,你可以使用你的軟件包管理器安裝一個(gè) C 編譯器。在 Fedora 或 RHEL 上:

$ sudo dnf install gcc

在 Debian 及其衍生系統(tǒng)上:

$ sudo apt install build-essential

在 macOS 上,你可以 安裝 Homebrew ,并使用它來(lái)安裝 GCC:

$ brew install gcc

在 Windows 上, 你可以使用 MinGW 安裝一套最小的包含 GCC 的 GNU 實(shí)用程序集。

在 Linux 或 macOS 上驗(yàn)證你已經(jīng)安裝的 GCC:

$ gcc --versiongcc (GCC) x.y.zCopyright (C) 20XX Free Software Foundation, Inc.

在 Windows 上,提供 EXE 文件的完整路徑:

PS> C:\MinGW\bin\gcc.exe --versiongcc.exe (MinGW.org GCC Build-2) x.y.zCopyright (C) 20XX Free Software Foundation, Inc.

C 語(yǔ)法

C 語(yǔ)言不是一種腳本語(yǔ)言。它是一種編譯型語(yǔ)言,這意味著它由 C 編譯器處理來(lái)產(chǎn)生一個(gè)二進(jìn)制可執(zhí)行文件。這不同于腳本語(yǔ)言(如 Bash)或混合型語(yǔ)言(如 Python)。

在 C 語(yǔ)言中,你可以創(chuàng)建函數(shù)來(lái)執(zhí)行你希望做到的任務(wù)。默認(rèn)情況下,執(zhí)行的是一個(gè)名為 main 的函數(shù)。

這里是一個(gè)使用 C 語(yǔ)言寫(xiě)的簡(jiǎn)單的 “hello world” 程序:

#include <stdio.h> int main() {  printf("Hello world");  return 0;}

第一行包含一個(gè)被稱(chēng)為 stdio.h(標(biāo)準(zhǔn)輸入和輸出)的 頭文件,它基本上是自由使用的、非常初級(jí)的 C 語(yǔ)言代碼,你可以在你自己的程序中重復(fù)使用它。然后創(chuàng)建了一個(gè)由一條基本的輸出語(yǔ)句構(gòu)成的名為 main 的函數(shù)。保存這些文本到一個(gè)被稱(chēng)為 hello.c 的文件中,然后使用 GCC 編譯它:

$ gcc hello.c --output hello

嘗試運(yùn)行你的 C 語(yǔ)言程序:

$ ./helloHello world$
返回值

這是 Unix 哲學(xué)的一部分,一個(gè)函數(shù)在執(zhí)行后“返回”一些東西:在成功時(shí)不返回任何東西,在失敗時(shí)返回其它的一些東西(例如,一個(gè)錯(cuò)誤信息)。這些返回的內(nèi)容通常使用數(shù)字(確切地說(shuō)是整數(shù))表示:0 表示沒(méi)有錯(cuò)誤,任何大于 0 的數(shù)字都表示一些不成功的狀態(tài)。

Unix 和 Linux 被設(shè)計(jì)成在運(yùn)行成功時(shí)保持沉默是很明智的。這是為了讓你在執(zhí)行一系列命令時(shí),假設(shè)沒(méi)有任何錯(cuò)誤或警告會(huì)妨礙你的工作,從而可以始終為成功執(zhí)行做準(zhǔn)備。類(lèi)似地,在 C 語(yǔ)言中的函數(shù)在設(shè)計(jì)上也預(yù)期不出現(xiàn)錯(cuò)誤。

你可以通過(guò)一個(gè)小的修改,讓你的程序看起來(lái)是失敗的,就可以看到這一點(diǎn):

include <stdio.h> int main() {  printf("Hello world");  return 1;}

編譯它:

$ gcc hello.c --output failer

現(xiàn)在使用一個(gè)內(nèi)置的 Linux 測(cè)試方式來(lái)運(yùn)行它。僅在成功時(shí),&& 操作符才會(huì)執(zhí)行一個(gè)命令的第二部分。例如:

$ echo "success" && echo "it worked"successit worked

失敗時(shí),|| 測(cè)試會(huì)執(zhí)行一個(gè)命令的第二部分。

$ ls blah || echo "it did not work"ls: cannot access 'blah': No such file or directoryit did not work

現(xiàn)在,嘗試你的程序,在成功時(shí),它返回 0;而是返回 1

$ ./failer && echo "it worked"String is: hello

這個(gè)程序成功地執(zhí)行了,但是沒(méi)有觸發(fā)第二個(gè)命令。

變量和類(lèi)型

在一些語(yǔ)言中,你可以創(chuàng)建變量而不具體指定變量所包含的數(shù)據(jù)的類(lèi)型。這些語(yǔ)言如此設(shè)計(jì)使得解釋器需要對(duì)一個(gè)變量運(yùn)行一些測(cè)試來(lái)視圖發(fā)現(xiàn)變量是什么樣的數(shù)據(jù)類(lèi)型。例如,var=1 定義了一個(gè)整型數(shù),當(dāng)你創(chuàng)建一個(gè)表達(dá)式將 var 與某些東西相加時(shí),Python 知道顯然它是一個(gè)整型數(shù)。它同樣知道當(dāng)你連接 hello 和 world 時(shí),單詞 world 是一個(gè)字符串。

C 語(yǔ)言不會(huì)為你做任何這些識(shí)別和調(diào)查;你必須自己定義你的變量類(lèi)型。這里有幾種變量類(lèi)型,包括整型(int),字符型(char),浮點(diǎn)型(float),布爾型(boolean)。

你可能也注意到這里沒(méi)有字符串類(lèi)型。與 Python 和 Java 和 Lua 以及其它的編程語(yǔ)言不同,C 語(yǔ)言沒(méi)有字符串類(lèi)型,而是將字符串看作一個(gè)字符數(shù)組。

這里是一些簡(jiǎn)單的代碼,它建立了一個(gè) char 數(shù)組變量,然后使用 printf 將數(shù)組變量和一段簡(jiǎn)單的信息打印到你的屏幕上:

#include <stdio.h> int main() {   char var[6] = "hello";   printf("Your string is: %s\r\n",var);}

你可能會(huì)注意到,這個(gè)代碼示例向一個(gè)由五個(gè)字母組成的單詞提供了六個(gè)字符的空間。這是因?yàn)樵谧址慕Y(jié)尾有處一個(gè)隱藏的終止符,它占用了數(shù)組中的一個(gè)字節(jié)。你可以通過(guò)編譯和執(zhí)行代碼來(lái)運(yùn)行它:

$ gcc hello.c --output hello$ ./hellohello

函數(shù)

和其它的編程語(yǔ)言一樣,C 函數(shù)也接受可選的參數(shù)。你可以通過(guò)定義你希望函數(shù)接受的數(shù)據(jù)類(lèi)型,來(lái)將參數(shù)從一個(gè)函數(shù)傳遞到另一個(gè)函數(shù):

#include <stdio.h> int printmsg(char a[]) {   printf("String is: %s\r\n",a);} int main() {   char a[6] = "hello";   printmsg(a);   return 0;}

簡(jiǎn)單地將一個(gè)函數(shù)分解為兩個(gè)函數(shù)的這種方法并不是非常有用,但是它演示了默認(rèn)運(yùn)行 main 函數(shù)以及如何在函數(shù)之間傳遞數(shù)據(jù)。

條件語(yǔ)句

在真實(shí)的編程中,你通常希望你的代碼根據(jù)數(shù)據(jù)做出判斷。這是使用條件語(yǔ)句完成的,if 語(yǔ)句是其中最基礎(chǔ)的一個(gè)語(yǔ)句。

為了使這個(gè)示例程序更具動(dòng)態(tài)性,你可以包含 string.h 頭文件,顧名思義,它包含用于檢查字符串的代碼。嘗試使用來(lái)自 string.h 文件中的 strlen 函數(shù)測(cè)試傳遞給 printmsg 函數(shù)的字符串是否大于 0

#include <stdio.h>#include <string.h> int printmsg(char a[]) {  size_t len = strlen(a);  if ( len > 0) {    printf("String is: %s\r\n",a);  }} int main() {   char a[6] = "hello";   printmsg(a);   return 1;}

正如在這個(gè)示例中所實(shí)現(xiàn)的,該條件永遠(yuǎn)都不會(huì)是非真的,因?yàn)樗峁┑淖址偸?nbsp;hello,它的長(zhǎng)度總是大于 0。這個(gè)不夠認(rèn)真的重新實(shí)現(xiàn)的 echo 命令的最后一點(diǎn)要做是接受來(lái)自用戶的輸入。

命令參數(shù)

stdio.h 文件包含的代碼在每次程序啟動(dòng)時(shí)提供了兩個(gè)參數(shù): 一個(gè)是命令中包含多少項(xiàng)的計(jì)數(shù)(argc),一個(gè)是包含每個(gè)項(xiàng)的數(shù)組(argv)。例如, 假設(shè)你發(fā)出這個(gè)虛構(gòu)的命令:

$ foo -i bar

argc 是 3,argv 的內(nèi)容是:

  • argv[0] = foo

  • argv[1] = -i

  • argv[2] = bar

你可以修改示例 C 語(yǔ)言程序來(lái)以字符串方式接受 argv[2],而不是默認(rèn)的 hello 嗎?

命令式編程語(yǔ)言

C 語(yǔ)言是一種命令式編程語(yǔ)言。它不是面向?qū)ο蟮模矝](méi)有類(lèi)結(jié)構(gòu)。使用 C 語(yǔ)言的經(jīng)驗(yàn)可以教你很多關(guān)于如何處理數(shù)據(jù),以及如何更好地管理你的代碼運(yùn)行時(shí)生成的數(shù)據(jù)。多使用 C 語(yǔ)言,你最后能夠編寫(xiě)出其它語(yǔ)言(例如 Python 和 Lua)可以使用的庫(kù)。

想要了解更多關(guān)于 C 的知識(shí),你需要使用它。在 /usr/include/ 中查找有用的 C 語(yǔ)言頭文件,并且看看你可以做什么小任務(wù)來(lái)使 C 語(yǔ)言對(duì)你有用。在學(xué)習(xí)的過(guò)程中,使用來(lái)自 FreeDOS 的 Jim Hall 編寫(xiě)的 C 語(yǔ)言忘備錄。它在一張雙面紙忘備錄上放置了所有的基本要素,所以在你練習(xí)時(shí),可以立即訪問(wèn) C 語(yǔ)言語(yǔ)法的所有要素。

感謝各位的閱讀,以上就是“C語(yǔ)言簡(jiǎn)單編程的方法是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C語(yǔ)言簡(jiǎn)單編程的方法是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI