C++11其實主要就四方面內(nèi)容,第一個是可變參數(shù)模板,第二個是右值引用,第三個是智能指針,第四個是內(nèi)存模型(Memory Model)。相對來說,這也是較難理解的幾個特性,分別針對于泛型編程,內(nèi)存優(yōu)化,內(nèi)存管理和并發(fā)編程。
最近應邀在牛客網(wǎng)寫 C++ 求職專欄,又把以前的秋招總結(jié)補充了很多東西,現(xiàn)在想想還是發(fā)出來,希望能夠幫助更多的新手小伙伴們。
為什么要學習C/C++/object-c?如何學習C/C++?本文簡單整理了一些C++圖書列表,按順序閱讀,可涵蓋入門到精通。
C語言一般提供三種預處理功能:宏處理、文件包含、條件編譯。頭文件防衛(wèi)式申明中會用到條件編譯中 #ifndef、#define、#endif 的用法。所以,首先價紹下條件編譯。
我們經(jīng)常會討論這樣的問題:什么時候數(shù)據(jù)存儲在堆棧 (Stack) 中,什么時候數(shù)據(jù)存儲在堆 (Heap) 中。我們知道,局部變量是存儲在堆棧中的;debug 時,查看堆??梢灾篮瘮?shù)的調(diào)用順序;函數(shù)調(diào)用時傳遞參數(shù),事實上是把參數(shù)壓入堆棧,聽起來,堆棧象一個大雜燴。那么,堆棧 (Stack) 到底是如何工作的呢?本文將詳解 C/C++ 堆棧的工作機制。
你是否也聽過類似的話語?我聽說過無數(shù)次,有些是面對面的交談,而有些來自某個論壇。雖然答案無非是“取決于具體情況”,但以我的拙見,學習C編程是非常寶貴的經(jīng)驗。我想通過這篇短文向你展示C偉大的一面。
緩沖區(qū)溢出非常危險,因為??臻g內(nèi)保存了函數(shù)的返回地址。該地址保存了函數(shù)調(diào)用結(jié)束后后續(xù)執(zhí)行的指令的位置,對于計算機安全來說,該信息是很敏感的。如果有人惡意修改了這個返回地址,并使該返回地址指向了一個新的代碼位置,程序便能從其它位置繼續(xù)執(zhí)行。實際上很多程序都會接受用戶的外界輸入,尤其是當函數(shù)內(nèi)的一個數(shù)組緩沖區(qū)接受用戶輸入的時候,一旦程序代碼未對輸入的長度進行合法性檢查的話,緩沖區(qū)溢出便有可能觸發(fā)!本文主要介紹棧溢出的相關(guān)知識與保護措施,文章較長,建議先碼后看。
C語言會同意一些"令人震驚"的結(jié)構(gòu),下面的結(jié)構(gòu)是合法的嗎,我們來看看幾個例子。
樹是數(shù)據(jù)結(jié)構(gòu)中的重中之重,尤其以各類二叉樹為學習的難點。在面試環(huán)節(jié)中,二叉樹也是必考的模塊。本文主要講二叉樹操作的相關(guān)知識,梳理面試常考的內(nèi)容。請大家跟隨小編一起來復習吧。
所謂的數(shù)組越界,簡單地講就是指數(shù)組下標變量的取值超過了初始定義時的大小,導致對數(shù)組元素的訪問出現(xiàn)在數(shù)組的范圍之外,這類錯誤也是 C 語言程序中最常見的錯誤之一。在C語言中,數(shù)組必須是靜態(tài)的。換而言之,數(shù)組的大小必須在程序運行前就確定下來。