教C語言高手學C (01)

2021-08-30 01:36:31 字數 2249 閱讀 5610

教c語言高手學c++(01)

人物介紹:

c++大師:擁有十年的c++開發經驗,最近幾年轉入公司專案管理和員工培訓工作,以c++語言,系統設計和規劃,專案管理,員工培訓見長。在公司除了帶團隊之外,常常負責給員工培訓,偶爾上小課解答初級程式設計師的疑惑。

小蔡:現在時的嵌入式系統工程師,組合語言/c語言的每天使用者。已經開發了3年程式,想提高一下自己的水平。

梆子:小蔡是乙個c語言高手,最近參與到其中乙個專案,這個專案要求用c++語言。c++語言,對小蔡來說,既陌生又熟悉。熟悉的是基本語法,陌生的是,c++中的物件導向語法部分。這讓小蔡很痛苦,對他來說,c語言已經比組合語言高階很多,一直認為c語言,就是非常完美的語言了。

這一天,小蔡聽說,公司有個專案經理,以前和他一樣,也是乙個c語言高手,但是現在非常推崇c++。

於是,他決定去請教這位c++大師,看看自己該如何學習c++。

劇情拉開。

用c++,簡單得多的程式

進得門來,一陣客套之後,程式設計師本性露了出來,小蔡直接開始發問。

小蔡:你說,就我目前的情況,應該再學點啥呢?

大師:哎,嗯,呵呵……那就學 c++ 吧。

小蔡:你老勸我學c++,我們開發過程中真的用不到。畢竟,並不是所有的專案,都需要用到c++的啊。

大師:打人的時候,我們都看到招式,起作用的,其實是內功。

小蔡:c++不就是一種新的招式麼?

大師:非也,非也。就你目前情況,用得最熟練的**,當然就是最好的**。可是,一方面,我覺得嵌入式系統開發,還有很多領域將來會以c++為主,比如我們公司,目前很多專案,都開始採用c++實現。另外一方面,物件導向的開發思想,如果你具備,用c語言,一樣可以開發出好的程式來的。

小蔡:聽著累,你說實際點的。

大師放下自己手裡的書。眼睛裡露出得意的笑容。

大師:這還真找對人了。你的**中,至少有10項採用了c++才具備的特性。比如,新的for語句用法,const定義引數……

小蔡:呵呵,上次入職培訓。你已經給我們詳細講過了,這些好用的特性,只要我的編譯器具備,我才不在乎是c,還是c++的特性呢。

大師:哦,看來,我不使出點殺手鐗,你是不知道c++的厲害了。

小蔡:就是,光知道吹牛。

大師:去,拿紙來。

小蔡取來紙筆,大師開始講課。

大師:你知道的,我也是先玩了很多年c語言,才開始接觸物件導向和c++的。要說,c++比c語言優秀的地方,第乙個,就是程式生長起來,成為大程式後,c++的開發效果更好。

這方面,我的體會很多的,因為我常常在用c++的時候思考,如果用c,咋辦?

所以,呵呵,我是最有資格來給你講為啥c程式設計師,必須學習 c++的。

小蔡笑:別吹了。快舉例子。

大師:嗯,我的經驗,都是大例子。1,想起來了。

大師:上次,你們的除錯**中不是都要用到這個例子嗎?你們要輸出一些資訊到螢幕上,以驗證你們的程式是否正確執行,用c++這樣做。

大師在紙上寫下這樣乙個程式:

class trace

大師:看,我們定義乙個類,用來在你除錯**的時候,輸出提示。你們用c語言如何做的?

小蔡:我們用巨集。

大師:嗯,聰明的做法,這恐怕是c++時代,巨集唯一的用處了。

但是,你看,當我們需要控制是否輸出的時候,c++這樣做:

class trace

int deprint(char *s)

int on();

int off();

private:

bool noisy;

} **是不是生長了。

對比一下,我們採用on和off來控制,比採用巨集的,是不是邏輯上要直觀得多。

小蔡:我有些理解了。邏輯上,用巨集也很直觀,但,如果這些**,用c語言來實現,有些混亂,沒有這樣清晰。小蔡在紙上寫下了,用c語言實現的辦法。

大師:對了,精彩的還在後面。假如,程式還生長,我們要讓這些資訊,列印到其他地方,比如,說,輸出到乙個檔案中,你如何辦?

小蔡:……真的,很麻煩呢。

大師:嗬嗬,這就是c++精華所在。你看:

class trace

int deprint(char *s)

int on();

int off();

private:

bool noisy;

file *f; //note here

} 你看,用c語言,束手無策的時候,用c++,只用增加乙個物件描述資料,改改輸出物件即可,非常簡單。

小蔡:這個案例,太精彩了。

大師狡猾的笑了:這樣精彩的案例,我們這裡的專案案例中,比比皆是,你是身在寶山阿。容我慢慢給你講來。

《C 》01 資料型別

使用程式語言進行程式設計時,需要用到各種變數來儲存各種資訊。變數保留的是它所儲存的值的記憶體位置。這意味著,當您建立乙個變數時,就會在記憶體中保留一些空間。您可能需要儲存各種資料型別 比如字元型 寬字元型 整型 浮點型 雙浮點型 布林型等 的資訊,作業系統會根據變數的資料型別,來分配記憶體和決定在保...

C 0 1揹包問題

0 1揹包問題 0 1揹包問題基本思想 p i,j 表示在前面i個物品總價值為j時的價值最大值。str i,j 表示在前面i個物品總價值為j時的價值最大值時的物品重量串。i 0 或者j 0時 p i,j 0 str i,j 第i件物品的在重量小於j時能夠放入揹包 p i,j p i 1,j w i ...

C 01揹包問題

01揹包問題 有n個重量和價值分別為wi,vi的物品。從這些物品中挑選出總重量不超過w的物品,求所有挑選方案中價值總和的最大值 輸入格式 nw v w輸出格式 價值總和最大值 輸入 42 3 1 23 4 2 25 輸出 7解題思路 對每個物品有兩種選擇,選或者不選。選擇該物品的話,總價值會增加,剩...