C語言是面向過程的,而C++是面向對象的面試
C和C++的區別:算法
C是一個結構化語言,它的重點在於算法和數據結構。C程序的設計首要考慮的是如何經過一個過程,對輸入(或環境條件)進行運算處理獲得輸出(或實現過程(事務)控制)。編程
C++,首要考慮的是如何構造一個對象模型,讓這個模型可以契合與之對應的問題域,這樣就能夠經過獲取對象的狀態信息獲得輸出或實現過程(事務)控制。 因此C與C++的最大區別在於它們的用於解決問題的思想方法不同。之因此說C++比C更先進,是由於「 設計這個概念已經被融入到C++之中 」。安全
C與C++的最大區別:在於它們的用於解決問題的思想方法不同。之因此說C++比C更先進,是由於「 設計這個概念已經被融入到C++之中 」,而就語言自己而言,在C中更多的是算法的概念。那麼是否是C就不重要了,錯!算法是程序設計的基礎,好的設計若是沒有好的算法,同樣不行。並且,「C加上好的設計」也能寫出很是好的東西。服務器
此次與你們分享的是我對 C 語言中函數使用注意事項的小短文,但願能幫助有疑惑的同窗更好的使用這個強大的語言特性。數據結構
你們在高中的時候都求過數學函數的表達式,其實編程語言的函數與數學表達式其實是同樣的。編程語言
咱們均可以將其理解爲一個有輸入有輸出的「功能黑箱」,看下圖:分佈式
就相似給函數一個 x 值,能夠求結果同樣,給函數一些輸入參數,也能夠獲得相同的輸出結果。模塊化
小編推薦一個學C語言/C++的學習裙【 七三零,一三零,二二一 】,不管你是大牛仍是小白,是想轉行仍是想入行均可以來了解一塊兒進步一塊兒學習!裙內有開發工具,不少乾貨和技術資料分享!函數
1. 模塊化編程
爲何要使用函數呢?實際上是爲了更好的維護軟件的功能以及實現模塊化編程。
你能夠想下若是把全部的功能都寫在 main 函數中,那該多麼可怕,估計沒人會讀你寫的代碼。
經過使用函數可使咱們的軟件邏輯性更強,單獨的功能寫在單獨的函數中,還能夠方便後期複用等等,好處還有不少實在列舉不完。
其中比較重要的做用要說:模塊化編程和代碼複用了,建議你去找實際的項目看看代碼組成,天然就理解了。
2. 函數的副本機制
不少初學者都搞不清楚函數的副本機制,例以下面的交換函數:
這個函數是錯誤的,由於函數在進行參數傳遞的時候,會將傳入參數 m,n 的值拷貝給函數的形式參數 a,b。
所以在函數內部交換的是形式參數 a,b 的值,而不是交換傳遞時 m,n 變量的值。
函數的副本機制從內存的角度來講就是:在函數進行參數傳遞的時候,實參和形參的內存地址是不一樣的。
這是這個例子的輸出結果,每一個人的機器可能都不一樣:
能夠看到變量 m 和 a,以及 n 和 b 的內存地址均不一樣,所以對值的交換也是不起做用的。
可是使用指針就徹底不一樣了,看下面這個例子:
小編推薦一個學C語言/C++的學習裙【 七三零,一三零,二二一 】,不管你是大牛仍是小白,是想轉行仍是想入行均可以來了解一塊兒進步一塊兒學習!裙內有開發工具,不少乾貨和技術資料分享!
這個函數纔是正確的交換函數,爲何呢?
由於咱們這裏傳遞的是 m,n 的內存地址,即傳遞的是指針,因此在函數內部對指針解除引用就能夠直接訪問這個地址的內容了,這是指針提供的特性。
那麼是否就意爲着傳遞指針就沒有副本機制了呢?這也是錯誤的,指針也是變量,本質上與 int 沒有區別,只是特性不一樣罷了。
上面例子在傳遞指針的時候,也是將 m,n 的地址拷貝給 pa,和 pb,也是存在副本機制的。
只不過這裏拷貝的是地址而不是值,在內部經過指針的解引用操做能夠直接訪問 m,n 的內存地址,進而進行交換。
由於指針很是重要,因此建議你本身運行這個程序,能夠看到輸出結果中 pa 指向的是 m 的內存地址,而 &pa 是指針變量 pa 的內存地址,這兩個千萬不要搞混了。
必定時時刻刻記住下面的結論:
1. 一個 int 變量有本身的內存地址,也有本身存儲的整數值
2. 一個指針變量有本身的內存地址,也有本身存儲的指向地址值
3. 變量在內存中都有本身的地址和其存儲的內容
3. 函數的參數傳遞順序
VC 和 gcc 編譯器計算函數參數的順序都是從右向左,這個特色一點要記住,面試可能會問到。
你可使用下面這個程序去驗證,程序比較簡單,留做給你的思考(不去思考就等於浪費時間看 cd 這篇文章了):
小編推薦一個學C語言/C++的學習裙【 七三零,一三零,二二一 】,不管你是大牛仍是小白,是想轉行仍是想入行均可以來了解一塊兒進步一塊兒學習!裙內有開發工具,不少乾貨和技術資料分享!
好了,今天就到這裏。
寫在最後
編程最重要的練,重複寫。
這些是C/C++能作的
服務器開發工程師、人工智能、雲計算工程師、信息安全(黑客反黑客)、大數據 、數據平臺、嵌入式工程師、流媒體服務器、數據控解、圖像處理、音頻視頻開發工程師、遊戲服務器、分佈式系統、遊戲輔助等