三個小故事帶你快速了解C C 和C 的區別

2021-09-26 10:17:30 字數 3302 閱讀 8569

故事2:魔法師的「火球術」

故事3:不同車型的比拼

c語言是乙個極其高冷的人,因此回答都是冷冷的:

我:你好c語言,我想把大象放到冰箱裡,幫我做好不好?

c:好我:那我們要怎麼做呢?

c:猜我:額。。。是不是應該先創造乙隻大象?

c:是我:怎麼創造呢?

c:猜我只好去翻了一下文件,哦,malloc一塊記憶體啊。

我:好的,我用malloc,申請一塊空間放大象好不好?

c:好我:額。。。大象怎麼構造呢?

c:猜我。。。去看了看大象的結構

我:好吧。。。我定義了乙個大象的資料結構,接下來怎麼做?

c:猜我心裡一陣說不出的感覺。。。

我:哦好吧,我創造乙個冰箱,步驟應該和大象差不多。

c:嗯我翻看了冰箱的結構,然後定義了乙個冰箱的struct。

我:好了,冰箱構造出來了,怎麼放呢?

c:哼我。。。默默在stack overflow上輸入"如何把大象放進冰箱 c"。

我:終於找到答案了,定義乙個方法,把大象的鼻子放進去、眼睛放進去、耳朵放進去。ok,都放進去了。c,你輸出一下看看吧。

c:燙燙燙燙燙燙燙

我:哈哈哈哈c你終於不高冷了

我:哎,你咋不說話了?c?你發燒了嗎?

立刻一盆水倒上去。

c++是乙個知識淵博的孩子,相對年輕,也沒那麼高冷。

我:c艹,我們把大象放冰箱好嗎?

c++:滾

說話的不高冷呢?

我:額我錯了,親愛的c++,我們把大象放冰箱好吧。

c++:好的麼麼噠,大象的資料型別已經有人定義好了,冰箱也有人定義好了,你需要分別構造乙個哦。

我:好的。

於是我翻看了文件後知道了用new來構造

我:ok,親愛的c++,我想構造乙個大象。

c++:好的,構造大象的方法有13個,請問你選擇哪一種呢?

我。。。

我:你介紹一下吧。

c++:ok,首先可以在棧上面構造,這麼做的好處呢是可以方便資源管理,而且語法也好看一些,可以利用raii,如果你不知道什麼事raii,你可以去cppreference上面查一下,當然你也可以在堆上構造,可以構造乙隻很大很大的大象,還有。。。。。。。

乙個月過後,c++終於講完了。我也長滿了鬍鬚。。。刮了鬍子之後繼續工作

我:好的,c++,我就在棧上面構造乙隻大象吧。

c++:你不愛我了。

我:???

c++:你都沒有說「親愛的」。

我。。。

我:好吧,親愛的c++,我想簡單構造乙隻大象。

c++:好的呢,你可以選擇構造乙隻非洲象還是美洲象還是南極洲象,象的膚色是什麼樣子的你可以設定一下,象的屁股大小你可以設定一下,象的性別和性取向你看要什麼。。。。。。

我:我就想要乙隻簡單的,預設的就好。

我。。。

我:統一初始化

c++:好的,我們可以構造冰箱了。

我:好。。。

經過乙個月的選擇,終於構造出了冰箱。

c++:好的,冰箱提供了addelephant方法,可以直接使用哦。

我:哇太棒了,好的,我就用這個方法。

c++:這個方法提供了多種過載,可以拷貝,移動,也可以直接**,省的在移入冰箱之前構造乙個大象。

我:。。。你為啥不早說

c++:你為啥不早問。

我:就用移動的吧。

c++:ok,請用std::move將構造好的大象轉為右值引用。

我一臉懵,但是還是照辦。

我:好了

c++:ok,開始放入冰箱了哦,速度極快的呢。

突然c++:報錯了報錯了,分子和原子不是可以轉換的型別,大熊貓和愛迪生之間沒有+運算子等1556項錯誤。

我。。。。。。。。。

我:網上找資料,說看最後一行就差不多了,好的看看。嗯,看起來是第31行出錯了,錯誤是什麼呢?報錯資訊啥也沒說明白啊。隨便改改吧。編譯,執行。

我。。。長舒了一口氣。

我:我想把大象放進冰箱。

c#:好的主人,我爸爸微軟已經寫好了大象類,也寫好了冰箱類,你只需new一下就好了。

我:ok,new好了,放入冰箱。

c#:好的,已經放入,使用了冰箱的拓展方法addelephant<>方法。

我:嗯,你表現得很好,能不能放的稍微快點兒,剛剛c++放的就很快。

c#:為了您的安全,不能。

我:額。。。那我想調節一下大象耳朵的尺寸。

c#:對不起,不能調節。您可以設定大象的耳朵形狀,已為您定義好多種耳朵形狀,您還可以調整大象的膚色,已為您定義好多種膚色。

我:算了不調了,就這樣吧。

c#:好的。如果您需要速度,或者需要對大象的每個細節進行把握,還可以去看看我的弟弟,c++/clr,他可以完成您提出的這些功能。您也可以將他帶到我這裡來,我們可以一起工作的。你也可以把c++完成的工作匯出到二進位制形式,我可以直接使用的。

我:好的謝謝,不用了。

c#:好的,祝您生活愉快。

在遙遠的地方,有三位大魔法師,吸引了許多學徒。這三位魔法師都會一種魔術叫「火球術」。。。

第一位大魔法師叫c,他是這樣教學生的。

「火球術:」

「首先,把提前寫好的符咒放在桌子上。」

「然後,把左手抬起來。」

「把右手抬起來。」

「讓左手的位置下移3厘公尺。」

省略大約100行。

雖然這位魔法師的方法很麻煩。但是很快就能召喚出火球,同時以後重複這個步驟就可以召喚出火球。

第二位大魔法師叫c++,是c的徒弟。

他的火球術則是這樣的。

「首先,用100個小時製作一張封裝的,美觀的,有注釋的符咒,然後專門寫一篇文件描述它的外表。」

「然後在上面寫上火球術三個字。」

「扔出去。」

這位大魔法師的火球術使用很方便,只不過製作過程過於繁瑣,並且有的時候可能會過十分鐘才出現火球。

第三位大魔法師叫c#,據說是c和另一位姓j的大魔法師的不清不楚的產物。

他的火球術很簡單,只要喊一聲 火球!就可以了。

只不過有乙個致命的缺點。

如果離他的距離超過了5公尺,那所有的法術都會失效並且出現一大堆紅色的寫著error的神秘符咒,據說那是異次元的魔鬼的產物。

如果把這三種語言比作不同型別車的話,我想他們分別應該是這樣的:

c就像一台引擎裸露在外,輪子變速箱剎車傳動軸承都要自己裝的「車」,如果你是diy狂人喜歡自己造車,你會喜歡c的。

c++就像上面說的diy狂人造出來的一台馬力十足的跑車,包含了c的全部優點外加乙個外殼。開起來是瘋狂的野獸馬力十足,但是不是誰都能駕馭了,稍有不慎就會車毀人亡。

c#就像一台綜合性能非常好的轎跑,自動超速箱abs防抱死空調音響一應俱全。讓你輕鬆上路,怎麼開怎麼爽。但是你永遠體會不到飆車的激情了,而且這車只能在特定公路開哦~

三個小故事

一 a不喜歡吃雞蛋,每次發了雞蛋都給b吃。剛開始b很感謝,久而久之便習慣了。習慣了,便理所當然了。於是,直到有一天,a將雞蛋給了c,b就不爽了。她忘記了這個雞蛋本來就是a的,a想給誰都可以。為此,她們大吵一架,從此絕交。二 有一年,很熱的夏天,一隊人出去漂流。女孩的拖鞋在玩水的時候,把拖鞋掉下去了,...

分享生活中三個小故事

朱金燦 一 感恩 我和朋友肖哥以及他的朋友一起等車。突然他和他的朋友衝出去了,原來一輛三輪滑進乙個坑里,不能動彈,他倆跑過去幫忙推出來。我也連忙過去幫忙。車很快推出來了。三輪車主人騎著遠去了。我突然有些憤怒了 那人怎麼一聲不響就走了呢,至少應該給肖哥他們說聲謝謝吧。後來我後悔沒有上去質問那個人。是的...

三個小故事,讀懂印章的「前世今生」

為什麼要蓋章?蓋章為了什麼?印章是如何演變的?今天,通過三個小故事帶您讀懂簽章的 前世今生 原始社會都是小部落群居,人們日出而作 日落而歸,勞動成果平均分配,社會發展水平還沒有達到需要使用印章的階段。但是,隨著部落群體不斷壯大,領土面積也不斷擴張,部落首領沒有辦法同時兼顧多地區的管理,於是出現了將土...