c++知識問答1-創(chuàng)新互聯(lián)

1、C++關(guān)鍵字extern介紹,為什么被C編譯其編譯過的函數(shù),需要加extern "C"?

發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及成都發(fā)電機(jī)租賃等,在重慶網(wǎng)站建設(shè)、成都營銷網(wǎng)站建設(shè)、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。

解析:extern定義為:聲明外部變量【在函數(shù)或者文件外部定義的全局變量】;該關(guān)鍵字告訴編譯器,其聲明的函數(shù)和變量可以在本模塊或者其他模塊中使用。

通常:在模塊的頭文件中對本模塊提供給其他模塊引用的函數(shù)和全局變量以關(guān)鍵字extern聲明。

extern ”C“ 是連接申明,被它聲明表示編譯器處理代碼時(shí)候按照C語言規(guī)則進(jìn)行編譯;由于C語言是面向過程,不支持類似于C++的重載特性;所以對于C和C++混合代碼中,需要對C語言進(jìn)行特殊標(biāo)定,才可以進(jìn)行混合編譯。

2、C/C++語言的特點(diǎn)?

解析:C語言:是一種面向過程的結(jié)構(gòu)化語言;考慮的是如何通過一個(gè)函數(shù)或者過程實(shí)現(xiàn)由輸入獲得輸出的過程;其可以直接訪問內(nèi)存物理地址;可用于硬件/應(yīng)用軟件開發(fā)。

C++語言:是一種面向?qū)ο蟮恼Z言,基于類、對象和繼承,考慮的是如何構(gòu)造一個(gè)對象模型,讓這個(gè)模型能夠復(fù)合實(shí)際問題,從而通過模型對象來實(shí)現(xiàn)輸出或者控制。

3、const和constexpr介紹

解析:const在C/C++中可以定義const常量,也可以修飾函數(shù)形參和返回值。被const修飾的東西可以起到強(qiáng)制保護(hù),防止意外改變,增強(qiáng)程序健壯性。可以使用const_castexpression來取消const限制;

指針常量:const int* p = new int(1);? //指向數(shù)據(jù)為常量

常量指針:int *const p = new int(2); //指針本身為常量

constexpr是C++11新添加的關(guān)鍵字,用于修飾常量表達(dá)式,使其在編譯期進(jìn)行計(jì)算;和const相比:const表示”只讀“的語義,constexpr表示”常量“的語義。

constexpr變量:可以將變量聲明為constexpr,讓編譯器來判斷是否為一個(gè)常量表達(dá)式;如果用constexpr聲明一個(gè)指針,constexpr僅對指針有效,對它所指數(shù)據(jù)無關(guān);

constexpr函數(shù):指能用常量表達(dá)式的函數(shù);其返回類型和所有形參類型都是字面值類型,且函數(shù)體內(nèi)有且僅有一條return語句返回;

constexpr構(gòu)造函數(shù):構(gòu)造函數(shù)不能說是const,但字面值常量類構(gòu)造函數(shù)可以是constexpr。該構(gòu)造函數(shù)必須有一個(gè)空的函數(shù)體,所有的成員變量初始化放到初始化列表中進(jìn)行。

總結(jié):

1.const用于修飾不能被修改的對象,但const對象的值通常在程序運(yùn)行期間才能確定

2.constexpr用于修飾常量表達(dá)式或可返回常量表達(dá)式的constexpr函數(shù),在編譯時(shí)能確定值。

3.constexpr函數(shù)都是inline函數(shù)。

4、volatile關(guān)鍵字介紹

定義:該關(guān)鍵字與const對立,也是類型修飾符。主要用于修飾隨時(shí)變化的變量,與該變量相關(guān)的運(yùn)算不要進(jìn)行優(yōu)化編譯。每次直接從內(nèi)存中加載該變量的最新數(shù)據(jù)。

使用場合:在中斷服務(wù)程序和CPU相關(guān)寄存器的定義中使用。

5、sizeof的使用總結(jié)

解析:sizeof計(jì)算在棧中分配的內(nèi)存大??;sizeof是一種操作運(yùn)算符,編譯期獲取值,strlen是函數(shù),需要運(yùn)行期才進(jìn)行計(jì)算。

注意點(diǎn):1)對于結(jié)構(gòu)體對象取長度,會存在對齊補(bǔ)位操作;2)對函數(shù)使用sizeof,在編譯階段會被函數(shù)的返回值類型所代替;

6、指針和引用的區(qū)別

解析:指針和引用均提供了間接操作對象的功能。

1)指針存放某個(gè)對象的地址,其本身也是變量,也擁有地址;所以可以有指向指針的指針,指針可變,包括其所指的地址的改變和指向地址所存數(shù)據(jù)的改變;

2)引用是變量別名,聲明時(shí)候必須初始化,之后建立綁定關(guān)系,不能改變;

3)不存在指向空值的引用,但是存在指向空值的指針;

4)指針之間存在類型轉(zhuǎn)換,引用分為const和非const引用,非const引用只能和同類型的對象綁定,const引用可以綁定到不同但相關(guān)的對象或者右值。

7、指針和數(shù)組的區(qū)別

解析:1)數(shù)組可以全局?jǐn)?shù)據(jù)域建立,也可以在棧上被創(chuàng)建;指針可以隨時(shí)指向任意類型的內(nèi)存塊;2)sizeof可以計(jì)算出數(shù)組的容量,但是sizeof指針,只能獲取指針的大?。?)數(shù)組作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí)候,該數(shù)組自動(dòng)退化為同類型的指針。

8、空指針、野指針、懸垂指針和void指針

解析:空指針:指賦值為NULL或者0的指針;

野指針:指聲明后未初始化的指針;

懸垂指針:指經(jīng)過delete釋放后,繼續(xù)指向已被釋放內(nèi)存地址的指針;

void指針:無類型指針,被稱為通用指針或者泛指針,也被稱為萬能指針;使用時(shí)候需要恢復(fù)其指向?qū)ο箢愋汀?/p>

9、malloc/free和new/delete介紹

解析:malloc/free為標(biāo)準(zhǔn)庫函數(shù),new/delete是C++運(yùn)算符,可以被重載。

對于內(nèi)置數(shù)據(jù)類型,兩者可以通用;malloc申請內(nèi)存后不會初始化,在棧上申請,返回void類型指針,使用時(shí)候還需要進(jìn)行類型轉(zhuǎn)換;new申請內(nèi)存時(shí)候有默認(rèn)初始化,也可以指定初始化,在堆上申請內(nèi)存,返回具體類型的指針。

對于c++中類對象初始化時(shí)候,由于需要調(diào)用構(gòu)造函數(shù),釋放時(shí)候需要調(diào)用析構(gòu)函數(shù),所以需要用new/delete對malloc/free進(jìn)行封裝,實(shí)現(xiàn)類對象的創(chuàng)建。

10、智能指針介紹

解析:智能指針是存儲指向動(dòng)態(tài)分配(堆)對象指針的類,用于生存期的控制,能夠確保在離開指針?biāo)谧饔糜驎r(shí),自動(dòng)地銷毀動(dòng)態(tài)分配的對象,防止內(nèi)存泄漏。智能指針的核心實(shí)現(xiàn)技術(shù)是引用計(jì)數(shù),每使用它一次,內(nèi)部引用計(jì)數(shù)加1,每析構(gòu)一次內(nèi)部的引用計(jì)數(shù)減1;減少為0時(shí),刪除所指向的堆內(nèi)存。

C++11中提供了三種智能指針,引用頭文件為

std::shared_ptr:共享的智能指針

std::unique_ptr:獨(dú)占的智能指針

std::weak_ptr:弱引用的智能指針,它不共享指針,不能操作資源,用來監(jiān)視shared_ptr。

詳解可以參照連接(87條消息) c++11之智能指針_峰上踏雪的博客-博客_智能指針

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

標(biāo)題名稱:c++知識問答1-創(chuàng)新互聯(lián)
文章路徑:http://muchs.cn/article46/eeheg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)搜索引擎優(yōu)化、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)