C語言是面向過程的,而C++是面向?qū)ο蟮?br>
C和C++的區(qū)別:
C是一個結(jié)構(gòu)化語言,它的重點在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計首要考慮的是如何通過一個過程,對輸入(或環(huán)境條件)進行運算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)。
C++,首要考慮的是如何構(gòu)造一個對象模型,讓這個模型能夠契合與之對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”。
C與C++的最大區(qū)別:
在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”,而就語言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯!算法是程序設(shè)計的基礎(chǔ),好的設(shè)計如果沒有好的算法,一樣不行。而且,“C加上好的設(shè)計”也能寫出非常好的東西。

C 語言的發(fā)展方向
20世紀80年代初,C 在 UNIX系統(tǒng)的小型機世界中已經(jīng)是主導(dǎo)語言了,從那時開始,它已經(jīng)擴展到個人計算機和大型機, 大部分軟件開發(fā)商公司都選用了 C 語言來開發(fā)其子處理程序,電子表格軟件,編譯器等等。因為他們知道,C 可以產(chǎn)生緊湊而高效的程序。更重要的是,他們知道這些程序易于修改而且易于適應(yīng)新的計算機模式。

對于公司和熟悉 C 語言的人有幫助的東西,對其他用戶同樣有幫助。越來越多的計算機用戶已轉(zhuǎn)身使用 C 以便利用其優(yōu)點。不一定非得是計算機專業(yè)人員才能使用 C。
而到了20世紀90年代,許多軟件開發(fā)商開始轉(zhuǎn)身使用C++語言來進行大的編程項目。C++向 C 語言嫁接了面向?qū)ο缶幊坦ぞ撸嫦驅(qū)ο缶幊淌且环N哲學(xué)思想,它試圖讓語言來適應(yīng)問題,而不是讓問題來適應(yīng)語言)。C++差不多是 C 的一個超集,意味著任何 C 程序都同時是,或差不多是一個有效的 C++程序。通過學(xué)習(xí) C,你能夠更容易的接受 C++的許多知識。
不管 C++ 和 Java 這樣較新的語言如何流行,C 在軟件產(chǎn)業(yè)中仍然是一種重要的技能,在最想獲得的技能中,它一般都列在前10名。特別是在嵌入式系統(tǒng)的編程中,C也補課或缺。也就是說,它將用來為汽車,照相機,DVD播放器和其他現(xiàn)代化設(shè)備中逐漸普及的微處理器編程。同樣,C 已開始進入長期以來一直屬于 FORTRAN 的科學(xué)編程領(lǐng)域。最后,由于它是一種適合用來開發(fā)操作系統(tǒng)的語言,C 在 Linux的開發(fā)中也扮演著重要的角色。即使到現(xiàn)在,C 仍將保持強勁的勢頭。
簡而言之,C 是最重要的編程語言之一,并將繼續(xù)如此,如果你想找一份編程的工作,則首先你所不能缺失的一種能力就是C的使用。
計算機工作的基本原理

計算機
如果你打算學(xué)習(xí)如何使用 C語言來進行編程,你就必須要了解計算機工作原理方面的一些知識。這些知識會幫助你更好的理解使用 C語言 編寫程序與運行該程序時最終會發(fā)生的事情之間的聯(lián)系。
現(xiàn)在的計算機可分為幾個部件。中央處理單元(CPU)擔(dān)負著絕大部分的計算工作,隨機訪問存儲器(RAM)作為一個工作區(qū)來保存程序和文件;永久存儲器,一般是硬盤,即使在計算機關(guān)機時也能記下程序和文件;還有各種外部輸入輸出設(shè)備(如鍵盤,鼠標,打印機)用來提供人與計算機之間的通信。CPU負責(zé)處理程序,所以我們集中來討論它的功能。

CPU
CPU 的工作非常簡單,至少在我們所了解的情況中是這樣的。它從內(nèi)存中獲取一個指令并執(zhí)行這條指令,然后從內(nèi)存中獲取下一個指令并執(zhí)行它,周而復(fù)始。一個千兆 CPU 可以在一秒種內(nèi)進行大約一億次這樣的操作,所以 CPU 能以驚人的速度來從事極其枯燥的工作,如果用人力來執(zhí)行,可能會使一個人精神崩潰。CPU 有自己的小工作區(qū),該工作區(qū)由若干個寄存器組成,每個寄存器可以保存一個數(shù)。一個寄存器保存下一條指令的內(nèi)存地址,CPU 使用該信息獲取下一條指令。獲取一條指令后,CPU 在另一個寄存器中保存該指令并將第一個寄存器的值更新為下一條指令的地址。CPU 只能理解有限的指令(指令集)。還有,這些指令是相當(dāng)具體的,其中許多指令要求計算機將一個數(shù)從一個位置移動到另一個位置,例如,從內(nèi)存單元移到寄存器。
這段說明有兩個有趣的地方。首先,存儲在計算機中的一切內(nèi)容都是數(shù)字。數(shù)字是以數(shù)字形式存儲 的,字符也是以數(shù)字形式存儲的,每個字符有一個數(shù)字代碼(ASCII)。計算機裝載到寄存器的指令是以數(shù)字形式存儲的,指令集中的每條指令具有一個數(shù)字代碼。其次,計算機程序最終必須以這種數(shù)字指令代碼(或稱為機器語言)來表示。
了解了計算機運行方式之后:如果你希望計算機幫你做某件事,就必須提供一個特定的指令列表,確切地告訴計算機要做的事及如何去做,計算機是死的,他只會按照你的命令去做事。你必須以一種計算機可以直接理解的語言(機器語言)來創(chuàng)建該程序。這是一項繁瑣,乏味,費力的任務(wù)。即使將兩個想回這樣簡單的事也必須被分解成若干個步驟:
1、將內(nèi)存單元為2000中的數(shù)字復(fù)制到寄存器1.
2、將內(nèi)存單元為2004中的數(shù)字復(fù)制到寄存器2.
3、將寄存器2的內(nèi)容加到寄存器1的內(nèi)容,答案保留在寄存器1中。
4、將寄存器1的內(nèi)容復(fù)制到內(nèi)存單元2008.
而且你必須用數(shù)字代碼來表示這些指令中的每一個!
如果你喜歡以這種方式編寫程序,抱歉,機器語言編程的時代已經(jīng)過去很久了。
而如果你還是想要學(xué)習(xí)編程,那么你可以學(xué)習(xí)高級編程語言。
高級計算機語言和編譯器
如 C語言 這樣的高級編程語言,可以從幾個方面簡化你的編程過程。首先,你不必用數(shù)字代碼即ASCII來表示指令。其次,你所使用的指令更接近你考慮問題的方式,而非接近計算機使用的詳細操作步驟?,F(xiàn)在你不用再考慮特定 CPU 實現(xiàn)特定任務(wù)所必須采取的精確步驟,而是可以在更抽象的層次上表達你的意圖。
例如,要對兩個數(shù)求和 a+b=c,你可以編寫下列內(nèi)容:
c = a + b;
看到這樣的代碼,即使你沒學(xué)過編程,你也能大概的知道它所表達的意思。但如果看到用數(shù)字代碼表示的由若干條指令組成的機器語言等價代碼,則不會讓人這么明白。
比如這樣的一段匯編代碼,:
mov ax,1
mov bx,2
add ax,bx
mov cx,ax
mov ax,4c00h
同樣是a+b=c,事實上如果沒有專門的學(xué)習(xí)過,我完全不理解它所表達的是什么意思。
不幸的是,計算機對于我們來說則正好相反。對計算機來說,高級指令是完全不能理解的胡言亂語。因而才有了 編譯器 的出現(xiàn)。編譯器是將高級語言程序翻譯成計算機所能理解的詳細機器語言指令集的程序。分工合作,我們只需要進行高級思考,余下的交給編譯器來完成就好可以了。

常用的編譯器
簡單的說,高級語言(如C,Java 和 C++)都以更抽象的方式即我們?nèi)说乃季S來實現(xiàn)代碼。同樣,高級語言相較于機器語言來說更容易學(xué)習(xí),同時用高級語言編寫程序比用機器語言來說,代碼量更少,更容易。
自學(xué)C/C++不易,此路應(yīng)攜手前行。
如果你想跟著小編一起學(xué)編程的話!
可以來我專欄介紹的C語言/C++編程學(xué)習(xí)基地,【點擊進入】!
還有(源碼,零基礎(chǔ)教程,項目實戰(zhàn)教學(xué)視頻)【進入領(lǐng)取】!?

