国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C/C++面試常見問題——const關(guān)鍵字的作用和用法

這篇具有很好參考價(jià)值的文章主要介紹了C/C++面試常見問題——const關(guān)鍵字的作用和用法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

首先我們需要一下const關(guān)鍵字的定義,const名叫常量限定符,當(dāng)const修飾變量時(shí),就是在告訴編譯器該變量只可訪問不可修改,而編譯器對(duì)于被const修飾的變量有一個(gè)優(yōu)化,編譯器不會(huì)專門為其開辟空間,而是將變量名和數(shù)值作為一個(gè)kv鍵值對(duì)存入到符號(hào)表中。

注意:const修飾的變量必須要在定義時(shí)初始化

C/C++面試常見問題——const關(guān)鍵字的作用和用法,面試常見問題,c語言,c++

如上,當(dāng)我們想要通過指針改變a時(shí)發(fā)現(xiàn)無法改變,這就是因?yàn)榫幾g器對(duì)其的優(yōu)化,導(dǎo)致a為存入符號(hào)表的一個(gè)固定值,而&a和b的地址一樣只是編譯器想讓我們看到的,實(shí)際上是取地址時(shí),編譯器又開了一塊空間存儲(chǔ)a的值,并將這個(gè)空間地址給b。

?通過volatile關(guān)鍵字修飾變量我們可以告訴編譯器,該變量無需優(yōu)化

C/C++面試常見問題——const關(guān)鍵字的作用和用法,面試常見問題,c語言,c++

如上所示

?一,const常見用法

1.1 const修飾變量

const int a=10;
int const a=10;

const修飾變量如下,該變量無法直接修改,但是可以通過指針進(jìn)行修改

1.2 const修飾指針

const修飾指針以*為界限分為常量指針、指針常量,也就是我們經(jīng)常說的左定值,右定向

常量指針

const在*號(hào)左邊,指針?biāo)赶虻闹禑o法改,但是可以改變指針的指向

C/C++面試常見問題——const關(guān)鍵字的作用和用法,面試常見問題,c語言,c++

指針常量

const在*號(hào)右邊,指針?biāo)赶虻闹悼梢孕薷?,但是無法更改指針的指向

C/C++面試常見問題——const關(guān)鍵字的作用和用法,面試常見問題,c語言,c++

以及兩者共存的情況 ,無法修改指針指向的內(nèi)容,也無法修改指針的指向

C/C++面試常見問題——const關(guān)鍵字的作用和用法,面試常見問題,c語言,c++

1.3 const修飾類成員變量

const修飾類成員變量,該變量必須要在初始化列表初始化,初始化之后該變量無法在更改,即使是構(gòu)造函數(shù)也無法修改

class example
{
public:
	example(int a=10)
		:_a(a)
	{
		//_a = 11;//無法修改,會(huì)報(bào)錯(cuò)
	}
private:
	const int _a;
};

1.4 const修飾類成員函數(shù)

const修飾成員函數(shù)使用格式如下

class example
{
public:
	example(int a=10)
		:_a(a)
	{}
    void Example() const;
private:
	int _a;
};

實(shí)際上const修飾的是Example成員函數(shù)隱藏的*this指針,因此其實(shí)際修飾格式如下

class example
{
public:
	example(int a=10)
		:_a(a)
	{}
    //void Example() const;
    void Example(const example* this);
private:
	int _a;
};

因此當(dāng)const修飾成員函數(shù)時(shí),該函數(shù)對(duì)于對(duì)象的成員變量只能讀取不能修改

1.5 const修飾函數(shù)返回值

const修飾函數(shù)返回值,則函數(shù)返回值被賦值對(duì)象必須也被const所修飾,通常返回值與引用搭配

const int& example();

const int a=exampel();//正確
int a=example();//錯(cuò)誤

二、const實(shí)戰(zhàn)常用用法解析

2.1 const修飾函數(shù)輸入式參數(shù)

const修飾輸入式參數(shù)指的是,當(dāng)我們函數(shù)的某個(gè)參數(shù)只希望函數(shù)內(nèi)部讀取而不能修改,就可以使用const進(jìn)行修飾

C/C++面試常見問題——const關(guān)鍵字的作用和用法,面試常見問題,c語言,c++?

例如上面所示,STL庫(kù)中的strcmp函數(shù),比較兩個(gè)字符串是否相等,因此無需對(duì)其進(jìn)行修改,為了保護(hù)參數(shù)就可以用const進(jìn)行修飾

2.2 const修飾類成員函數(shù)

當(dāng)類成員函數(shù)只需訪問類成員變量,如打印成員變量之類,此時(shí)就可以用const修飾,防止誤改成員變量

?C/C++面試常見問題——const關(guān)鍵字的作用和用法,面試常見問題,c語言,c++

如上圖STL中的vector容器,重載[]訪問數(shù)組元素的接口,就有為了保證成員變量不被改變而const修飾成員函數(shù)的操作

2.3 const修飾函數(shù)返回值

C/C++面試常見問題——const關(guān)鍵字的作用和用法,面試常見問題,c語言,c++

C/C++面試常見問題——const關(guān)鍵字的作用和用法,面試常見問題,c語言,c++

?如上圖所示,注意vector中重載[]的第二個(gè)接口的返回值const_reference,而該類型實(shí)質(zhì)上是const value_type&,注意這個(gè)引用,后面要考。

首先當(dāng)我們選擇引用返回相比于正常返回,中間減少了數(shù)據(jù)拷貝——臨時(shí)變量——數(shù)據(jù)拷貝的過程,有效提升了返回效率。而引用返回也有其弊端,如果用戶修改這個(gè)返回值,那么就會(huì)直接影響容器中對(duì)應(yīng)的值,如果我們不想讓用戶隨意修改容器中的數(shù)據(jù)又想要高效的引用返回,那么就需要用const修飾返回值文章來源地址http://www.zghlxwxcb.cn/news/detail-720597.html

到了這里,關(guān)于C/C++面試常見問題——const關(guān)鍵字的作用和用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C# const關(guān)鍵字學(xué)習(xí)

    C# const關(guān)鍵字學(xué)習(xí)

    你居然不知道const?今天在做項(xiàng)目的時(shí)候別人問我的,我確實(shí)不知道這個(gè),今天我們就來一起學(xué)習(xí)一下const定義局部變量,這個(gè)對(duì)于常數(shù)變量非常的友好的,可以提高程序的運(yùn)行效率,因?yàn)樗窃诰幾g時(shí)的操作,所以我們必須要學(xué)習(xí)一下,這不就是提

    2024年01月22日
    瀏覽(24)
  • 【C++】const關(guān)鍵字的詳解??!

    【C++】const關(guān)鍵字的詳解??!

    ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???? ?? ?? ?? 個(gè)人主頁(yè) :阿然成長(zhǎng)日記 ??點(diǎn)擊可跳轉(zhuǎn) ?? 個(gè)人專欄: ??數(shù)據(jù)結(jié)構(gòu)與算法??C語言進(jìn)階 ?? 不能則學(xué),不知?jiǎng)t問,恥于問人,決無長(zhǎng)進(jìn) ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? const是永恒不

    2024年02月03日
    瀏覽(30)
  • ES6中l(wèi)et和const關(guān)鍵字與var關(guān)鍵字之間的區(qū)別?

    ES6中l(wèi)et和const關(guān)鍵字與var關(guān)鍵字之間的區(qū)別?

    前端入門之旅:探索Web開發(fā)的奇妙世界 歡迎來到前端入門之旅!感興趣的可以訂閱本專欄哦!這個(gè)專欄是為那些對(duì)Web開發(fā)感興趣、剛剛踏入前端領(lǐng)域的朋友們量身打造的。無論你是完全的新手還是有一些基礎(chǔ)的開發(fā)者,這里都將為你提供一個(gè)系統(tǒng)而又親切的學(xué)習(xí)平臺(tái)。在這個(gè)

    2024年02月09日
    瀏覽(27)
  • 重學(xué)C++系列之const與static關(guān)鍵字分析

    重學(xué)C++系列之const與static關(guān)鍵字分析

    ? ? ? ? 本篇幅講解const與static,主要圍繞在類的范圍內(nèi)敘述,包括作用和使用場(chǎng)景等。 ? ? ? ? 1、const修飾的成員變量,成員變量初始化后不能再修改。 ? ? ? ? 2、const修飾的成員函數(shù),成員函數(shù)不可以修改成員變量,也不能間接修改。 ? ? ? ? 3、static修飾的成員

    2024年02月15日
    瀏覽(23)
  • 在C++和C中static關(guān)鍵字的用法,在C++和C中const關(guān)鍵字的用法

    1、在C++和C中static的用法 答:static表示存儲(chǔ)類型,修飾數(shù)據(jù)類型。在C語言中,static修飾局部變量,內(nèi)存分配在靜態(tài)區(qū),生命周期延長(zhǎng),作用域不變。static修飾全局變量,內(nèi)存分配在靜態(tài)區(qū),作用域被局限于本文件,不能被extern引用。static修飾函數(shù),不能被exter

    2024年02月10日
    瀏覽(21)
  • 嵌入式C語言關(guān)鍵字(const、static、volitatile)

    C語言中const修飾通常是用來聲明常量,并聲明常量的值不能修改。當(dāng)涉及 指針變量 時(shí)情況就會(huì)變得更加有趣,需要特別注意。因?yàn)橛袃蓸訓(xùn)|西都有可能成為常量— 一種是用來限定指向的空間的值不可修改;另一種是限定指針不可修改 。下面是幾個(gè)聲明的例子: 總結(jié):cons

    2024年02月06日
    瀏覽(26)
  • static,const,volatile,extern,register關(guān)鍵字深入解析

    static,const,volatile,extern,register關(guān)鍵字深入解析

    ?作者簡(jiǎn)介:嵌入式入坑者,與大家一起加油,希望文章能夠幫助各位?。。?! ??個(gè)人主頁(yè):@rivencode的個(gè)人主頁(yè) ??系列專欄:玩轉(zhuǎn)C語言 ??保持學(xué)習(xí)、保持熱愛、認(rèn)真分享、一起進(jìn)步!! 我們都知道一個(gè)源文件要生成我們計(jì)算機(jī)課執(zhí)行的文件要經(jīng)過: 源文件(test.c)—預(yù)編

    2023年04月08日
    瀏覽(22)
  • 【C++】const、static關(guān)鍵字和構(gòu)造函數(shù)初始化

    【C++】const、static關(guān)鍵字和構(gòu)造函數(shù)初始化

    ??個(gè)人主頁(yè)?? ?個(gè)人專欄——C++學(xué)習(xí)? ??點(diǎn)擊關(guān)注??一起學(xué)習(xí)C語言???? 目錄 1. const修飾成員函數(shù) 1.1 語法格式 1.2 權(quán)限放大縮小 1.3 思考 1.4 解答 2. 再談構(gòu)造函數(shù) 2.1 構(gòu)造函數(shù)體賦值 2.2 初始化列表 2.3 explicit 3. static成員 3.1 靜態(tài)變量 3.2 靜態(tài)函數(shù) 3.3?靜態(tài)成員變量

    2024年02月19日
    瀏覽(22)
  • JS中var、let以及const關(guān)鍵字到底怎么用?

    JS中var、let以及const關(guān)鍵字到底怎么用?

    在學(xué)習(xí)JS變量之后,初學(xué)者都避免不了都會(huì)一下子分不清這三個(gè)變量在代碼塊中的作用域范圍,其實(shí) const 簡(jiǎn)單理解它就是定義常量的,但是在實(shí)際開發(fā)中,我們卻很常見它的身影。 說實(shí)話剛開始我也分不清他們的作用域范圍,但是自己再去詳細(xì)看一遍教程之后,其實(shí)發(fā)現(xiàn)還是

    2023年04月13日
    瀏覽(21)
  • 【C++】C 語言 和 C++ 語言中 const 關(guān)鍵字分析 ( const 關(guān)鍵字左數(shù)右指原則 | C 語言中常量的原理和缺陷 | C++ 語言中常量原理 - 符號(hào)表存儲(chǔ)常量 )

    【C++】C 語言 和 C++ 語言中 const 關(guān)鍵字分析 ( const 關(guān)鍵字左數(shù)右指原則 | C 語言中常量的原理和缺陷 | C++ 語言中常量原理 - 符號(hào)表存儲(chǔ)常量 )

    【C 語言】const 用法 ( 常量指針 - const 在 * 左邊 - 修飾數(shù)據(jù)類型 - 內(nèi)存不變 | 指針常量 - const 在 * 右邊 - 修飾變量 - 指針不變 ) 普通類型數(shù)據(jù)的常量定義時(shí) , const 在 數(shù)據(jù)類型 的 左邊 和 右邊 其作用 是相同的 ; 指針數(shù)據(jù)的相關(guān)常量類型 : const 在 指針符號(hào)

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包