日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

计算机语言缺省,揭秘物联网必学语言——C语言与C++的区别

發布時間:2023/12/2 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机语言缺省,揭秘物联网必学语言——C语言与C++的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言雖說經常和C++在一起被大家提起,但可千萬不要以為它們是一個東西。有很多人會有這樣的疑問:C語言和C++有什么區別呢?

C++是在C語言的基礎上發展來的,但是并不是C++比C語言高級,兩者的編程思想不一樣,應用的領域也不一樣。在各自的領域,誰也不能替代誰。

本篇來大致聊一聊C語言與C++的區別,如有其他看法,歡迎交流指正。

一、面向過程語言和面向對象語言

我們都知道C語言是面向過程語言,而C++是面向對象語言,說C和C++的區別,也就是在比較面向過程和面向對象的區別。

1. 面向過程和面向對象的區別

(1)面向過程:面向過程編程就是分析出解決問題的步驟,然后把這些步驟一步一步的實現,使用的時候一個一個的依次調用就可以了。

(2)面向對象:面向對象編程就是把問題分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描述某個事物在整個解決問題的步驟中的行為。

舉個例子:(玩五子棋)

(1)用面向過程的思想來考慮就是:開始游戲,白子先走,繪制畫面,判斷輸贏,輪到黑子,繪制畫面,判斷輸贏,重復前面的過程,輸出最終結果。

(2)用面向對象的思想來考慮就是:黑白雙方(兩者的行為是一樣的)、棋盤系統(負責繪制畫面)、規定系統(規定輸贏、犯規等)、輸出系統(輸出贏家)。

? 面向對象就是高度實物抽象化(功能劃分)、面向過程就是自頂向下的編程(步驟劃分)

2.面向過程和面向對象的優缺點

在學習一些比較抽象的概念時,由于我們的理解能力很有限,有時候一些比較恰當的例子也是有助于我們學習的,因此對二者的優缺點比較,還是先舉例子,后總結吧!

(1)用面向過程寫出來的程序就像一份蛋炒飯,也就是米飯和炒的菜均勻的混合在了一起,因此蛋炒飯入味均勻,不會像蓋澆飯那樣,可能有時候吃的菜多飯少,還有時候菜少飯多。但是如果你不喜歡吃蛋炒飯,只想吃肉炒飯,那么原來做的這份蛋炒飯就得倒掉了,重新做一份肉炒飯,廚師就得辛苦了!

(2)用面向對象寫出來的程序就像一份蓋澆飯,也就是米飯和蓋菜分別做好,將蓋菜放在米飯上面,蓋澆飯雖然沒有蛋炒飯那樣入味均勻,但是如果給了你一份土豆絲蓋飯,你又不想吃了,換成牛肉蓋飯,廚師只需要將米飯上面的土豆絲倒掉,重新做一份牛肉放在上面就好了。

那么到底蛋炒飯和蓋澆飯哪個好吃呢?

我覺得各有優劣,誰也不能說到底哪個好,畢竟蛋炒飯的餐館和蓋澆飯的餐館都很多,而且生意都很不錯,存在即為合理!

如果非要將二者進行一個高地的比較的話,那就得先設定一個場景了!

蓋澆飯的好處就是”菜”“飯”分離,從而提高了制作蓋澆飯的靈活性。飯不滿意就換飯,菜不滿意換菜。用專業術語來說就是”可維護性“較好,”飯” 和”菜”的耦合度比較低。

蛋炒飯將”蛋”“飯”攪和在一起,想換”蛋”“飯”中任何一種都很困難,耦合度很高,以至于”可維護性”比較差。

? 基于上述的例子,二者的優劣總結如下:

面向過程語言

優點:性能比面向對象高,因為類調用時需要實例化,開銷比較大,比較消耗資源;比如單片機、嵌入式開發、 Linux/Unix等一般采用面向過程開發,性能是最重要的因素。

缺點:沒有面向對象易維護、易復用、易擴展

面向對象語言:

優點:易維護、易復用、易擴展,由于面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統 更加靈活、更加易于維護

缺點:性能比面向過程低

二、具體語言的區別

1. 關鍵字不同

C99有32個關鍵字

C++98有63個關鍵字

一些關鍵字的細微區別:

(1)struct:在C語言中struct定義的變量中不能有函數,而在C++中可以有函數。

(2)malloc :malloc函數的返回值為void*,在C語言中可以賦值給任意類型的指針,在C++中必須強制類型轉換,否則報錯。

(3)struct和class:class是對struct的擴展,struct默認的訪問權限是public,而class默認的訪問權限是private。

2. 后綴名不同

C源文件后綴.c,C++源文件后綴.cpp,在VS中,如果在創建源文件時什么都不給,默認是.cpp。

3. 返回值

C語言中,如果一個函數沒有指定返回值類型,默認返回int類型;C++中,如果一個函數沒有返回值則必須指定為void。

4. 參數列表

在C語言中,函數沒有指定參數列表時,默認可以接收任意多個參數;但在C++中,因為嚴格的參數類型檢測,沒有參數列表的函數,默認為 void,不接收任何參數。

5. 缺省參數

缺省參數是聲明或定義函數時為函數的參數指定一個默認值。在調用該函數時,如果沒有指定實參則采用該默認值,否則使用指定的參。(C語言不支持缺省參數)

(1)半缺省參數

void FunTest(int _iParam1, int _iParam2 = 0 )

{}

void FunTest(int _iParam1, int _iParam2 = 0 , int _iParam3/* = 0*/)

{}

void FunTest(int _iParam1, int _iParam2 /* = 0*/,int _iParam3 = 0)

{}

(2)全缺省參數

void FunTest(int _iParam1 = 0, int _iParam = 1)

//注意:慎用缺省函數,否則會產生二義性

void FunTest ()

void FunTest (int a = 10 )

//假如使用不帶實參方式調用FunTest()函數時,編譯器將不知道調用哪一個,產生二義性

注意:

(1)在半缺省的情況下,帶缺省值的參數必須放在參數列表的最后面。

(2)缺省參數不能同時在函數的聲明和函數定義中出現,二者只能選其一。

(3)缺省值必須是常量或者全局變量。

(4)缺省參數必須通過值參或常參傳遞。

6. 函數重載

函數重載:函數重載是函數的一種特殊情況,指在同一作用域中,聲明幾個功能類似的同名函數,這些同名函數的形參列表(參數個數、類型、順序)必須不同,返回值類型可以相同也可以不同,常用來處理實現功能類似數據類型不同的問題。(C語言沒有函數重載,C++支持函數重載)。

來看個例子:

//下面兩個函數算函數重載嗎?

void FunTest6()

{ } int

FunTest6()

return 0;

//答案是不能,因為僅僅返回值類型不同,不能構成重載

總結:

C語言和C++是兩個不同的編程語言,只不過內容上有一定的重疊;

C語言是一門很強大的編程語言,我覺得有機會還是要學一下;

一般來說,有了C語言的基礎,上手C++也會更快;

C++和C各有各的選用考慮和應用場景,并沒有誰更好一說,學不學看自己的興趣和自身技術發展的考量

物聯網時代,C/C++作為物聯網的的必學內容之一,能夠掌握核心技術才能把握整體脈絡,才能居高臨下。

總結

以上是生活随笔為你收集整理的计算机语言缺省,揭秘物联网必学语言——C语言与C++的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。