首頁 後端開發 C#.Net教程 c++基礎知識

c++基礎知識

Oct 26, 2019 am 10:48 AM
c++ 基礎知識

c++基礎知識

c 基礎

C 是一種中級語言,它是由Bjarne Stroustrup 於1979 年在貝爾實驗室開始設計開發的。 C 進一步擴充並完善了 C 語言,是一種物件導向的程式設計語言。 C 可運行於多種平台上,如 Windows、MAC 作業系統以及 UNIX 的各種版本。 C語言是過程導向的語言,C 在此基礎上增加了物件導向以及泛型程式設計機制,因此 C 更適合大中型程式的開發。然而,C 並沒有犧牲效率,如果不使用高階特性,它的效率和C語言幾乎沒有差異。

推薦學習:c 手冊教學

以下為大家整理了c 的基礎知識,希望對各位有幫助。

1、C 中的基本資料型別有哪些?

答案:3種型別:整數型、浮點型、void型。

2、整型有幾種形式,各種形式有什麼差別?

答案:整數型包含整數,字元和布林值的算術類型,依修飾符細分為13種形式,其主要差異體現在型別包含整數、長度、表示範圍幾個面向。

3、C 中有哪些常數?

答案:6種常數:整數常數、浮點型常數、字元型常數、字串常數、轉義字元常數、位址常數。

4、常數與變數有哪些差別?

答:(1)常數的值不可改變,變數的值可以改變;(2)常數在定義時必須初始化,變數在定義可以不初始化;(3)常數不可以尋址,其位址只可賦予常數指針,變數可以尋址;(4)常數有較高的編譯執行效率;

5、運算子有哪些分類?

答案:(1)依運算元區分:一元運算子、二元運算子、三元運算子;(2)依功能區分:算術運算子、關聯運算子、邏輯運算符、位元運算子、賦值運算子、自增自減運算子、箭頭運算子、條件運算子、sizeof運算子、逗號運算子。

6、自增自減前運算與後運算的差異?

答:前自增自減運算的優先權大於賦值運算子(=),後自增自減運算的優先權小於賦值運算符,後自增自減運算後表達式的值不會改變。

7、指標和變數的自增自減有什麼不同?

答案:變數的自增自減是改變變數的值,指標的自增自減是改變指標的指向位址。

8、什麼是左值、右值?

答案:變數是左值,可以在賦值語句的左邊;數字字面值是右邊值,不能被賦值。

9、變數有哪幾種初始化方式?

答案:2種:直接初始化;複製初始化。直接初始化更加靈活且執行效率更高。

10、變數的宣告和定義是什麼?

答:變數宣告的主要目的是表明變數的類型和名稱;變數定義的主要目的是分配儲存空間,它們有相同的時候。

11、C 中有哪幾種作用域?

答案:3種:全域作用域、局部作用域、語句作用域。

12、變數有哪幾種儲存類型?

答案:4種:自動型別、靜態型別、暫存器類型、外部型別。

13、C與C 有什麼不同?

答:C語言是結構化的程式語言,它是過程導向的,考慮的是實作過程;C 是物件導向的,考慮的是整個程式模型。

14、巨集定義與運算符的區別?

答案:巨集定義是C 的預處理指令之一,它是一個替換操作,不做計算和表達式求解,不佔記憶體和編譯時間。

15、虛函數與純虛函數的特徵?

答案:虛擬函數必須是基底類別的非靜態成員函數,其存取權限可以是protected或public;純虛函數是虛函數的子集,含有純虛函數的類別就是抽象類,它不能產生物件。

16、如何使用純虛函數?

答:純虛函數用來定義沒有意義的實現,用於抽象類別中需要交給衍生類別具體實現的方法。

17、什麼是指標?

答案:指標是用來儲存記憶體位址的變量,它指向單一物件的位址,除了void指標類型外,指標的資料類型與所指向位址的變數的資料類型需要保持一致。

18、const物件的指標和const指標的差別?

答案:const指標本身的值不可改變,但可以使用該指標修改它所指物件的值;const變數的指標不可以修改所指向的const變數的值,但指標本身可以被重新賦值。

19、陣列指標與指標陣列的差別?

答案:數組指標是指標變量,它指向一個數組;指標數組是一個只包含指標元素的數組,它的元素可以指向相同類型的不同物件。

20、什麼是函數指標?

答:函數指針是指向函數的儲存空間位址的指針,可以對函數指針進行賦值並透過函數指針來呼叫函數。

21、引用與值傳遞的差別?

答:值傳遞傳遞的是一個值的副本,函數對形參的運算不會影響實參的值;引用傳遞傳遞的是引用物件的記憶體位址,函數對形參的操作會影響實參的值,實參的值會隨著形參的值得改變而改變。

22、指標與引用的差別?

答案:(1)引用無須解引用,指標需要解引用;(2)引用在定義時被初始化一次,之後不可變,指標可變;(3)引用不能為空,指標可以為空;(4)程式為指標變數分配記憶體區域,而引用不需要分配記憶體區域,所以指標自增操作是指標變數的自增,引用自增操作是變數值的自增。

23、物件導向與過程導向的區別?

答:過程導向是一種以過程為中心的程式設計思想,以演算法驅動;物件導向是一種以物件為中心的程式設計思想,以訊息進行驅動。過程導向程式語言的組成:程式=演算法 資料;物件導向程式語言的組成:程式=物件 訊息。

24、物件導向的特徵是什麼?

答:面對物件的3個要素:封裝,繼承,多型。物件導向中所有物件都可以歸屬為一個類別。

25、類別與結構體有什麼差別?

答:(1)結構體儲存在堆疊中,類別的實例化可以儲存在堆疊中,也可以儲存在堆中;(2)結構體的執行效率比類別高;(3)結構體沒有析構函數,類別有析構函數;(4)結構體不可以繼承,類別可以繼承。

26、如何存取靜態成員?

答:靜態成員可以透過類別名稱直接調用,不需要建立類別的實例,也可以透過類別的實例進行調用,但底層仍然是透過類別名稱調用的,所以不推薦這種呼叫方法。類別的靜態方法只能存取類別的靜態成員。

27、什麼是多型?

答:多態就是將子類別物件賦給父類別變量,父類別變數在編譯期和運行期表現出不同的特性。

28、在C 中如何實現多態?

答案:多態有動態多型、靜態多型、函數多型和巨集多態等,我們常說的多態指的是動態多態,它是基於繼承機制和虛函數來實現的。

29、衍生類別與基底類別的轉換?

答案:衍生類別總是可以轉換為基底類別的參考型別;基底類別轉換為衍生類別需要在確定安全性的情況下使用強制轉換來實作。

30、什麼是虛成員,有什麼作用?

答案:虛擬函數的作用是實現動態聯編,程式發現虛函數名前的關鍵字virtual後,會自動將其作為動態聯編處理,即在程式執行時動態的選擇合適的成員函數。

31、C 覆蓋與隱藏概述?

答:(1)覆蓋指的是子類別和父類別中,存在函數名稱、參數均相同的函數,且父類別的該函數為虛擬函數;(2)隱藏指的是子類別與父類別中,存在函數名稱相同、參數不同的函數,此時無論父類別函數是否為虛函數,父類別函數都會被隱藏,或存在函數名稱、參數皆相同的函數,此時只有當父類別函數不為虛擬函數時,父類別函數才會被隱藏。

32、什麼是深拷貝與淺拷貝?

答:如果一個類別擁有資源,當這個類別的資源發生複製過程時,就叫做深拷貝;如果物件存在資源但在複製過程中並未複製資源就是淺拷貝。

33、什麼是拷貝建構函數,什麼時候呼叫?

#答案:拷貝建構子由編譯器呼叫來完成一些基於同一類別的其他物件的構建及初始化。有3種情況會使用拷貝建構函數:(1)一個物件以值傳遞的方式傳入函數體;(2)一個物件以值傳遞的方式從函數傳回;(3)一個物件需要透過另一個物件進行初始化。

34、什麼是型別轉換建構子?

答:一個類別的建構子只有一個參數,該參數型別不是為該類別型別而是其他類型,這個建構子就稱為型別轉換建構函數,它可以用來處理不同域的相同資料值。

35、C 支援參數個數不確定的函數嗎?

答案:C 可以透過隱藏參數機制來支援參數不確定的函數。

36、什麼是內聯函數?

答案:在類別宣告的內部宣告或定義的成員函數叫做內聯(inline)函數,在內聯函數內不允許有循環語句和switch語句。

37、引用形參與非引用形參的區別?

答:引用形參是將參數變數的位址來傳遞,可以透過函數對形參的呼叫來修改實參的值。

38、使用引用形參有什麼問題?

答:呼叫非const類型的引用形參,實參必須不是const型,二者型別應一致;當呼叫一個有const引用的形參函數時,如果實參不是一個變數或型別不符時,函數會建立一個無名的暫存變數用來儲存實參的值,並把這個形參當作該暫存變數的引用。

39、指標形參和引用形參有什麼不同?

答:指針形參是指函數的參數是指針,它不會像引用形參那樣透過函數呼叫影響實參的值,但是呼叫後它會修改實參的物件。程式中建議盡量少使用指針形參,這樣會使程式的可讀性下降。

40、什麼是靜態函數?如何使用靜態函數?

答案:靜態函數是用static修飾符修飾的函數,靜態函數沒有this指針,只能存取靜態變數。類別中如果函數呼叫的結果不會存取或修改任何物件資料成員,這樣的成員宣告為靜態成員函數比較好。

41、函數重載及作用域?

答案:函數重載是指在相同作用域下,具有相同名稱而不同參數列表的多個函數。

42、函數重載時如何實現實參的型別轉換?

答:當函數重載匹配時,先透過標準轉換來實現匹配,如果不行,再透過類別類型轉換來實現匹配。

43、什麼是函式模板?

答案:函數模板技術是指使用了模板技術定義了參數化類型的非成員函數,這使得程式能夠使用不同的參數類型呼叫相同的函數。

44、什麼是類別模板?

答案:類模板是使用模板技術的類,描述了能夠管理其他資料類型的通用資料類型。類別模板技術通常用於建立包含其他類型的容器類別(佇列、鍊錶、堆疊等)。

45、什麼是泛型程式設計?

答:泛型程式設計就是以獨立於特定類別實作的方式編寫程式碼,針對不同的型別提供通用的實作。

46、C 如何實作泛型程式設計?

答案:C 中泛型程式設計的實作是使用C 中的模板技術來實現的,主要是設計函數模板和類別模板。

以上是c++基礎知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1277
29
C# 教程
1257
24
C#與C:歷史,進化和未來前景 C#與C:歷史,進化和未來前景 Apr 19, 2025 am 12:07 AM

C#和C 的歷史與演變各有特色,未來前景也不同。 1.C 由BjarneStroustrup在1983年發明,旨在將面向對象編程引入C語言,其演變歷程包括多次標準化,如C 11引入auto關鍵字和lambda表達式,C 20引入概念和協程,未來將專注於性能和系統級編程。 2.C#由微軟在2000年發布,結合C 和Java的優點,其演變注重簡潔性和生產力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注於開發者的生產力和雲計算。

Golang和C:並發與原始速度 Golang和C:並發與原始速度 Apr 21, 2025 am 12:16 AM

Golang在並發性上優於C ,而C 在原始速度上優於Golang。 1)Golang通過goroutine和channel實現高效並發,適合處理大量並發任務。 2)C 通過編譯器優化和標準庫,提供接近硬件的高性能,適合需要極致優化的應用。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

Golang vs.C:性能和速度比較 Golang vs.C:性能和速度比較 Apr 21, 2025 am 12:13 AM

Golang適合快速開發和並發場景,C 適用於需要極致性能和低級控制的場景。 1)Golang通過垃圾回收和並發機制提升性能,適合高並發Web服務開發。 2)C 通過手動內存管理和編譯器優化達到極致性能,適用於嵌入式系統開發。

Python與C:學習曲線和易用性 Python與C:學習曲線和易用性 Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Golang和C:性能的權衡 Golang和C:性能的權衡 Apr 17, 2025 am 12:18 AM

Golang和C 在性能上的差異主要體現在內存管理、編譯優化和運行時效率等方面。 1)Golang的垃圾回收機制方便但可能影響性能,2)C 的手動內存管理和編譯器優化在遞歸計算中表現更為高效。

Python vs.C:探索性能和效率 Python vs.C:探索性能和效率 Apr 18, 2025 am 12:20 AM

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

表演競賽:Golang vs.C 表演競賽:Golang vs.C Apr 16, 2025 am 12:07 AM

Golang和C 在性能競賽中的表現各有優勢:1)Golang適合高並發和快速開發,2)C 提供更高性能和細粒度控制。選擇應基於項目需求和團隊技術棧。

See all articles