首頁 » C++

                  學編程選擇哪個語言?——編程語言人員需求和難度分析

                         1、C語言  C語言主要用于驅動開發、操作系統、內核開發,嵌入式(單片機)、交換機、路由器等網絡設備的開發。  ①、偏硬件方面,相當于目前互聯網和移動時代,可能薪資水平會低一些。如果之前學習電子自動化的或者對硬件感興趣的,可以選擇這個方向。  人員需求:★★★★   難度指數:★★★★  ②、偏向底層開發的:難度很大,比如要看懂Linux內核代碼。簡單說,如果你讀書的時候,數學物理不是很厲害的,不閱讀全文 »

                  2017年5月15日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  C++ 對象的內存布局

                         對象的影響因素   簡而言之,我們一個類可能會有如下的影響因素:  1)成員變量  2)虛函數(產生虛函數表)  3)單一繼承(只繼承于一個類)  4)多重繼承(繼承多個類)  5)重復繼承(繼承的多個父類中其父類有相同的超類)  6)虛擬繼承(使用virtual方式繼承,為了保證繼承后父類的內存布局只會存在一份)  上述的東西通常是C++這門語言在語義方面對對象內部的影響因素閱讀全文 »

                  2017年5月12日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:1

                  編程語言 5 月排行榜:Java 和 C 下跌厲害

                         TIOBE 最近公布了 2017 年 5 月編程語言指數排行榜,排名前三的還是 Java、C、C++,Python 和 C# 排第四和第五。自從 2016 年開始,Java 和 C 的比率數據在下降。和去年同期相比,兩者已下降超過 6%。流失的部分,哪些編程語言受益了呢?嗯,是其他語言都受益了。  隨著越來越多的領域采用軟件,C(底層軟件開發)和 Java(高級軟件開發)顯然無法都滿足了。閱讀全文 »

                  2017年5月9日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  一篇文章看明白 C++ 虛函數表

                         C++中的虛函數的作用主要是實現了多態的機制。關于多態,簡而言之就是用父類型別的指針指向其子類的實例,然后通過父類的指針調用實際子類的成員函數。這種技術可以讓父類的指針有“多種形態”,這是一種泛型技術。所謂泛型技術,說白了就是試圖使用不變的代碼來實現可變的算法。比如:模板技術,RTTI技術,虛函數技術,要么是試圖做到在編譯時決議,要么試圖做到運行時決議。閱讀全文 »

                  2017年4月14日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  C/C++返回內部靜態成員的陷阱

                         在我們用C/C++開發的過程中,總是有一個問題會給我們帶來苦惱。這個問題就是函數內和函數外代碼需要通過一塊內存來交互(比如,函數返回字符串),這個問題困擾和很多開發人員。如果你的內存是在函數內棧上分配的,那么這個內存會隨著函數的返回而被彈棧釋放,所以,你一定要返回一塊函數外部還有效的內存。  這是一個讓無數人困擾的問題。如果你一不小心,你就很有可能在這個上面犯錯誤。閱讀全文 »

                  2017年3月29日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  C++實戰項目:坦克大戰(十)

                         上一篇中我們已經得到了一個比較完善的游戲,不過有人反饋說目前的難度較大,第三關已經很難通過了。今天我們來做點小的修改。  如果你認為我們要通過調整參數降低游戲的難度,那你就錯了。作為游戲的開發者,我們最大的優勢就是擁有上帝視角,可以隨意讓游戲按照我們的要求變化。  添加獎勵  目前的三滴血不太夠用,我們添加一個功能,每得到500分就另外獲得一滴血。實現起來很簡單,只需要在計算分數的時候修改就好閱讀全文 »

                  2017年3月20日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:1

                  C++實戰項目:坦克大戰(九)

                         現在我們的游戲已經初具規模,但如果主戰坦克一直是無敵狀態那也很無趣。今天我們來讓敵人的炮火發揮作用。  主戰坦克被擊中  當敵人的炮彈和主戰坦克接觸時,主戰坦克生命值減一。我們預設的主戰坦克共有三條命,被擊中三次后游戲結束。  為主戰坦克添加碰撞檢測大家應該很熟悉,修改之前的CheckCrash()函數如下:...閱讀全文 »

                  2017年3月15日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  C++實戰項目:坦克大戰(八)

                         上一篇中設計出了關卡和分數,但每新開始一個新的關卡時沒有任何提示信息,這樣略顯突兀。我們需要在每一個關卡開始之前給出一個提示信息,同時讓玩家有休息的時間。 繪制提示信息 我們要在Battle區域中,顯示一個矩形,中間打印關卡號。效果如下:  實現起來也很容易,在Graphic類中添加一個ShowGameLevel函數:...閱讀全文 »

                  2017年3月13日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  C++實戰項目:坦克大戰(七)

                         目前我們的主戰坦克已經能夠開炮擊毀敵人坦克了,但敵人坦克不會開炮貌似比較欺負人。今天我們讓敵人坦克也擁有開炮功能。同時,我們要為游戲設定關卡,讓它變得好玩起來。  讓敵人坦克開炮  在EnemyTank類中,添加Shoot函數幾乎和MainTank中完全相同,... 這里唯一的區別是最后一句話,我們對m_bNeedShoot屬性進行了賦值。敵人坦克和主戰坦克最大的區別在于自動開炮,它不像主戰坦克那閱讀全文 »

                  2017年3月8日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:1

                  C++實戰項目:坦克大戰(六)

                         上一篇中,我們的主戰坦克發出的炮彈還沒有實際的作用,今天我們就讓它擁有擊毀敵軍坦克的功能。  新增基礎API  Rect類  在Rect類中,我們添加下面兩個新接口。 ... 這兩個函數的作用是返回矩形右上角和左下角的兩個點。這樣方便我們在計算炮彈是否擊中坦克時使用。閱讀全文 »

                  2017年3月6日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:2

                  C/C++產生隨機數的方法

                         c庫偽隨機數發生器  rand  srand  大多時候用時間產生隨機發生器的seed c++11 引入的偽隨機數發生器.隨機數抽象成隨機數引擎和分布兩部分.引擎用來產生隨機數,分布產生特定分布的隨機數 常用的就是線性均勻分布 uniform_int_distribution uniform_real_distribution閱讀全文 »

                  2017年2月17日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  C++實戰項目:坦克大戰(五)

                         上一篇中我們給主戰坦克添加了發射炮彈的功能。不過有一個問題,炮彈飛到戰場邊緣時,自動消失的感覺不太好。我們今天來給炮彈加上一個爆炸的效果。  爆炸功能  爆炸的效果不僅僅用在炮彈上,當坦克被擊中后也應該有這么一個爆炸效果。我們給所有的元素都抽象一個爆炸的功能,放在Object類中。閱讀全文 »

                  2017年1月4日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:3

                  C++實戰項目:坦克大戰(四)

                         上一篇中,我們添加了可以自動行駛的敵人坦克,今天我們給主戰坦克添加最核心的功能——開炮。  第一次重構  既然要開炮,就要有炮彈。我們自然就想到要新建一個炮彈類。為了符合我們之前的設計思想,我們需要給這個新的炮彈類找一個基類。用Tank類作基類貌似不太合適,于是,我們要重構代碼。  我們創建一個全新的Object類作為今后程序中所有類的基類。閱讀全文 »

                  2016年12月30日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:1

                  C++實戰項目:坦克大戰(三)

                         戰場范圍  之前我們的坦克從戰場的一邊走出之后會從另一邊重新進入戰場。這樣不符合我們游戲的定義。我們需要把它們改成遇到戰場邊就不能再繼續向前走了。  主戰坦克  修改MainTank.cpp中的Move方法...閱讀全文 »

                  2016年12月27日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  C++實戰項目:坦克大戰(二)

                         這一篇中,我們繼續繼續進行我們的坦克大戰。 位置信息數據結構  在游戲設計過程中,需要記錄大量的位置信息,如果僅僅使用(x,y)坐標很容易出錯。這一篇中,我們先定義兩個簡單的數據結構用來保存點和矩形的信息。 在項目中新建Model目錄,創建下面四個文件:... 這個頭文件創建了一個Point類,有兩個成員變量m_x,m_y用來記錄一個點的橫、縱坐標。閱讀全文 »

                  2016年12月13日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:3

                  C++實戰項目:坦克大戰(一)

                         對坦克大戰情有獨鐘是因為大學時候第一次參加程序設計比賽就做的這個游戲。當時用的語言是Java,那個比賽讓我悟出了面向對象的強大之處,我也是從那時開始接觸設計模式的。對我而言,坦克大戰有著非同尋常的意義,所以一定要帶大家用C++實現一下。 知識準備 建議大家先看看面向對象編程的三個重要特性,之后再來學習后面的內容。 代碼分享 這個項目中的代碼會在GitHub上發布,里面的每一個分支對應著簡書中的每閱讀全文 »

                  2016年12月7日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:10

                  編程語言間的戰爭

                         1 桌面時代  古老的C 王國從1972誕生以后, 一直都非常強大, 這里的臣民對它又愛又恨, 因為它的法律允許它的臣民直接操作內存,執行效率極高, 但是又對內存分配回收不管不顧,全部扔給子民們去處理。  其實純粹的C語言還是比較簡單的, 只要你能真正的搞懂指針是怎么回事 , C++誕生以后,在C的基礎上又加入了面向對象, 泛型編程等“時髦”概念閱讀全文 »

                  2016年9月28日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  C/C++面試中碰到這種字符串指針的題你能得幾分

                         許多面試題看似簡單,卻需要深厚的基本功才能給出完美的解答。企業要求面試者寫一個最簡單的strcpy函數都可看出面試者在技術上究竟達到了怎樣的程度,我們能真正寫好一個strcpy函數嗎?我們都覺得自己能,可是我們寫出的strcpy很可能只能拿到10分中的2分。讀者可從本文看到 strcpy函數從2分到10分解答的例子,看看自己屬于什么樣的層次。此外,還有一些面試題考查面試者敏捷的思維能力。閱讀全文 »

                  2016年9月27日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:2

                  30年程序生涯26種語言 看我與“Hello World”的往事

                         我最近在7月4日的那一周休了一個假,因此有時間來回顧我的職業生涯。令我震驚的是,我已經寫了近30年的代碼了!于是,我決定好好利用這段額外的休息時間來創作一篇懷舊的帖子,回顧在過去近30年時間中我工作過的編程語言。向我從“Hello, World”開始學習新語言的30年致敬。 我學習的第一種編程語言是TI BASIC,BASIC專門為微軟TI 99 / 4A microcomputer而編寫的一種語閱讀全文 »

                  2016年9月8日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:0

                  結構體和類的內存字節對齊詳解

                         先說個題外話:早些年我學C程序設計時,寫過一段解釋硬盤MBR分區表的代碼,對著磁盤編輯器怎么看,怎么對,可一執行,結果就錯了。當時調試也不太會,又根本沒聽過結構體對齊這一說,所以,問題解決不了,好幾天都十分糾結。后來萬般無奈請教一個朋友,才獲悉可能是結構體對齊的事,一查、一改,果真如此。 問題是解決了,可網上的資料多數只提到內存對齊是如何做的,卻鮮有提及為什么這樣做(即使提,也相當簡單)。閱讀全文 »

                  2016年5月11日
                  作者:雞啄米 分類:軟件開發 瀏覽: 評論:1
                  北京赛车公式走势规律