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

編程機制
編寫程序時必須遵循確切步驟主要是取決于你的計算機環(huán)境。因為 C語言是可以移植的,所以它在許多環(huán)境中可用,其中包括 UNIX,Linux,Windows等等 。
不過,讓我們首先來看一看許多環(huán)境所共有的一些方面。你完全不必知道運行一個 C 程序后面的事情,但了解一點是一個很好的背景知識。它還可以幫助你理解為什么編寫一個 C 程序必須經過一些特定步驟。
用 C 語言編寫一個程序時,你將編寫的內容保存在一個被稱為源代碼文件的文本文件中。大多數 的系統,都需要該文件的名稱以 .c 結尾。例如,helloworld.c 。名稱中小點前的部分被稱為基本名,小點后的部分被稱為擴展名。因此,helloworld是一個基本名,c 是一個擴展名。組合在一起的 helloworld.c是文件名。
這樣,在我們提到名稱時內容就可以更具體,我們假定有一個名為 helloworld.c的源文件,其源代碼如下面所示。

小編推薦一個學C語言/C++的學習裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發(fā)工具,很多干貨和技術資料分享!
------------------------------------------------------
#include
int main ()
{
printf("hello world! ");
return 0;
}
------------------------------------------------------
目標代碼文件、可執(zhí)行文件和庫
C語言編程的基本策略是使用程序將源代碼文件轉換為可執(zhí)行文件,此文件包含可以運行機器語言代碼。它分兩步完成這一工作:編譯和鏈接。編譯器將源代碼轉換為中間代碼,鏈接器將此中間代碼與其他代碼相結合生成可執(zhí)行文件。C 使用被劃分為兩部分的這一方法使程序便于模塊化。你可分別編譯各個模塊,然后使用鏈接器將編譯過的模塊結合起來。這樣,如果需要改變一個模塊,則不必重新編譯所有其他的模塊。同時,鏈接器將你的程序與預編譯的庫代碼結合起來。
中間文件的形式有多種選擇。最一般的選擇,同時也是我們這里講述的實現方式所采取的選擇,是將源代碼轉換為機器語言代碼,將結果放置在一個目標代碼文件中。雖然目標文件包含機器語言代碼,但該文件還不能運行。目標文件包含源代碼的轉換結果,但它還不是一個完整的程序。
目標代碼文件中所缺少的第一個元素是一種叫做啟動代碼(start-up code)的東西,此代碼相當于你的程序和操作系統之間的接口。例如,你可以在DOS或Linux下運行一個 IBM PC兼容機,在兩種情況中硬件是相同的,所以會使用同樣的目標代碼,但DOS與Linux要使用不同的啟動代碼,因為這兩種系統處理程序的方式是不同的。
所缺少的第二個元素是庫例程的代碼。幾乎所有C程序都利用標準C庫中所包含的例程(稱為函數)。例如,前面的 concrete.c 使用了函數 printf()。目標代碼文件不包含這一函數的代碼,它只包含聲明使用 printf()函數的指令。實際代碼存儲在另一個稱為“庫”的文件中。庫文件中包含許多函數的目標代碼。
鏈接器的作用是將【目標代碼】、【系統的標準啟動代碼】和【庫代碼】這3個元素結合在一起,并將它們存放在單個文件,即可執(zhí)行文件中。對庫代碼來說,鏈接器只從庫中提取你所使用的函數所需要的代碼,如下圖中的簡單示例:

簡而言之,目標文件和可執(zhí)行文件都是由機器語言指令組成的。但目標文件只包含你所編寫的代碼轉換成的機器語言,而可執(zhí)行文件還包含你所使用的庫例程以及啟動代碼的機器代碼。
Windows系統的集成開發(fā)環(huán)境
因為 C 編譯器不是標準 Windows 包的一部分,所以需要獲得并安裝一個 C 編譯器。許多廠商都會提供基于 Windows的集成開發(fā)環(huán)境(IDE) 。所有編譯器都具有用來裝配C程序的快速,集成的開發(fā)環(huán)境。關鍵的一點是,它們都具有內置的編輯器,可用來編寫C程序。這類開發(fā)環(huán)境一般都提供了讓你可以命名和保存源代碼文件的菜單,以及讓你可以不離開IDE就能編譯和運行程序的菜單。如果編譯器發(fā)現任何錯誤,會返回到編輯器中,而且編輯器可以標出有問題的行,并將它們與相應的錯誤消息匹配起來,例如VC6.0、QT、Visual Studio(簡稱vs)。
Windows IDE最初可能讓人有一點望而生畏,因為它們提供多種目標,也就是說,提供了多種可讓程序在其中運行的環(huán)境。例如,它們可能提供16位Windows程序,32位Windows程序,動態(tài)鏈接庫文件(DLL)等等讓你選擇。許多目標都需要引入Windows圖形界面的支持。為了管理這些選項,通常需要創(chuàng)建一個項目,以便隨后向其中添加將要使用的源代碼文件名。一般來說,首先使用文件菜單來創(chuàng)建一個新的項目。重要的是選取正確的項目形式。本書中的例子是一般性的例子,設計目的是在一個簡單的命令行環(huán)境中運行。

小編推薦一個學C語言/C++的學習裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發(fā)工具,很多干貨和技術資料分享!
因為 Widnows IDE一般可處理 C 和 C++,所以你應該指明你需要一個C程序。在某些產品,可以使用項目類型來指明希望使用 C。而在其他一些產品,如 Microsoft Visual C++中,可以使用.c文件擴展名來指明希望使用 C 而不是 C++。然而,大多數 C 程序也可以作為 C++程序運行。
可能大家在寫完一個程序之后會遇到一個問題:顯示程序執(zhí)行的窗口在程序終止時突然消失,也就是程序運行后窗口一閃而過。如果遇到這種情況,那么可以使程序暫停,直到按下 Enter鍵。要做到這一點,請在程序的末尾,恰好在 return 語句之前,添加下面的一行:
getchar();
該行讀取一次按鍵,因此程序將暫停直到按下 Enter 鍵時。有時,根據程序函數的需要,可能已經有一個等待按鍵的指令。在這種情況下,需要使用 getchar()兩次:
getchar();
getchar();
例如,如果程序最后做的事情是請你輸入你的體重,那么就應當鍵入你的體重并按 Enter 鍵以輸入數據。程序將讀取體重,第1個getchar()將讀取 Enter鍵,第2個getchar()將導致程序暫停,直到再次按下 Enter鍵。如果現在你對此還不太理解,那么在學習更多關于 C 輸入的知識后你就明白了。
雖然各種IDE都有許多共同的原則,但在細節(jié)方面會因產品而異,而在一個產品系列中,又會因版本而異。你必須要經過一些實踐,才能知道編譯器的正確工作方式。
語言標準
目前,有許多 C 實現方式可用。理想情況下,編寫 C 程序時,假如該程序末使用機器特定的編程技能,則它在任何實現方式中的運行應該是相同的。要在實踐中做到這一點,不同的實現方式需要遵守一個公認的標準。
首先說明一點,C語言并沒有官方的標準。不過,Brian Kernighan 和 Dennis Ritchie 編寫的 The C Programming Language 第1版(1978)成為大家接受的標準,通常稱為 K&R C 或經典 C。特別是這本書附錄中的“C Reference Manual”已成為 C 實現的指南。例如,編譯器都會聲明它可提供一個完整的 K&R 實現。然而,雖然該附錄定義了 C 語言,但是卻沒有定義 C 庫。因為 C 比大多數其他語言更加依賴庫,所以還需要一個庫標準。因為缺乏任何官方標準,所以提供 UNIX 實現的庫成為一個事實上的標準。
第1個 ANSI/ISO C 標準
隨著 C語言的發(fā)展和更加廣泛地用于更多種類的系統上,使用 C 的群體意識到它需要一個更加全面,新穎和嚴格的標準。為了滿足這一要求,美國國家標準代組織(ANSI)在1983年設立了一個委員會以發(fā)展一個新的標準,該標準于1989年正式采用。這個新標準(ANSI C)定義了語言和一個標準 C 庫。國標標準化組織于1990年采用一個 C 標準 (ISO C )。ISO C 和 ANSI C 實質上是同一個標準。ANSI/ISO標準最終版本通常被稱為 C89 (因為 ANSI于1989年批準了該標準) 或 C90(因為 ISO 于1990年批準了該標準)。然而,因為 ANSI版本是首先出現的,所以人們通常使用ANSI C這一術語。
C99標準
1994年,修訂標準的工作開始了,這一努力的結果是產生了 C99標準。一個聯合 ANSI/ISO委員會簽署了 C90標準的最初原則,包括保持言語短小而簡單。他們的意圖不是為語言添加新的特性,而是為了滿足新的目標。新目標之一是支持國際化編程,例如,提供了處理國際字符集的方法。第二個目標是“整理現有的慣例以解決明顯的缺點”。因此,在遇到需要將 C 移植到 64 位處理器時,委員會根據在真實生活中處理問題的人的經驗來添加標準。第三個目標是針對科學和工程項目的重要數字計算改進 C 的適應能力。
國際化,修正其不足和改進計算的實用性這三點是主要的面向改變的目標。形成在關于更改的計劃在性質上更加保守,例如,讓與 C90 和 C++ 的不兼容性達到最小,讓語言在概念上保持簡單。肩帶來說就是希望 C++成為重要的和強有力的語言。
結果是 C99 的修改保持了 C 的本質特性,C 繼續(xù)是一種簡短,清楚,高效的語言。本書指出了 C99中的許多修改。因為目前大多數編譯器沒有完全實現所有 C99的修改,所以你可以會發(fā)現一些修改在你的系統上不可用?;蛘吣憧赡軙l(fā)現,只有修改編譯器的設置以后,才能夠看到一些 C99 的特性。

小編推薦一個學C語言/C++的學習裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發(fā)工具,很多干貨和技術資料分享!
總結
C 是一種強大,簡潔的編程語言。之所以流行是因為它提供了有用的編程工具和對硬件良好的控制,還因為 C 程序在從一個系統向另一個系統移植方面比大多數程序更容易。C 是一種需要編譯的語言。C 編譯器和鏈接器是將 C 語言源代碼轉換成可執(zhí)行代碼的程序。
用 C 編程可能很費力,困難并讓你感到灰心,但這一工作也可能讓你著迷,興奮和感到滿意。
這些是C/C++能做的
服務器開發(fā)工程師、人工智能、云計算工程師、信息安全(黑客反黑客)、大數據 、數據平臺、嵌入式工程師、流媒體服務器、數據控解、圖像處理、音頻視頻開發(fā)工程師、游戲服務器、分布式系統、游戲輔助等
如果可以的話,請大家多多轉發(fā)關注,謝謝支持!



