女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言類(lèi)型修飾符Const的教程使用說(shuō)明

電子設(shè)計(jì) ? 2018-09-20 09:37 ? 次閱讀

Const也是應(yīng)該廣泛的關(guān)鍵字,表示后面定義有可能是一個(gè)不變的常量,但是跟各種數(shù)據(jù)類(lèi)型定義組合,能演變出復(fù)雜含義。常類(lèi)型是指使用類(lèi)型修飾符const說(shuō)明的類(lèi)型,常類(lèi)型的變量或?qū)ο蟮闹凳遣荒鼙桓碌摹onst 推出的初始目的,正是為了取代預(yù)編譯指令,消除它的缺點(diǎn),同時(shí)繼承它的優(yōu)點(diǎn)。

Const 主要有如下應(yīng)用情況

1. 聲明后面是一個(gè)常量

2. 如果跟指針組合,將形成復(fù)雜的組合情況

3. 作函數(shù)參數(shù)數(shù)的修飾符。表示不能修改這一參數(shù)的值。主要是指針

4. 作函數(shù)返回值, 表示調(diào)用函數(shù)不能修改這一參數(shù)數(shù)的值。主要是指針

Const 讓人感到復(fù)雜是的,他的位置可以與被修飾的數(shù)據(jù)類(lèi)型互換!其它的修飾符沒(méi)有這樣用法。這樣換一般情況下是等效的, 如 const int c1= 5; 等效于 int const c1=5;但是,我說(shuō)是但是,如果數(shù)據(jù)類(lèi)型是一個(gè)指針,互換一樣位置表示完全不同含義,所以const 這 一個(gè)用法經(jīng)常是面試官用來(lái)折磨嵌入式C面試者的法寶之一。 參看如下定義 int b = 500; const int* a = &b; [1] int const *a = &b; [2] int* const a = &b; [3] const int* const a = &b; [4] 這種定義要看 const 的位置來(lái)確定他的用法。 const位于星號(hào)的左側(cè),則const就是用來(lái)修飾指針?biāo)赶虻淖兞浚粗羔樦赶驗(yàn)槌A浚蝗绻鹀onst位于星號(hào)的 右側(cè),const就是修飾指針本身,即指針本身是常量。因此,[1]和[2]的情況相同,都是指針?biāo)赶虻膬?nèi)容為常量(const放在變量聲明符的位置無(wú) 關(guān)),這種情況下不允許對(duì)指針指向內(nèi)容進(jìn)行更改操作,如不能*a = 3 ;[3]為指針本身是常量,而指針?biāo)赶虻膬?nèi)容不是常量,這種情況下不能對(duì)指針本身進(jìn)行更改操作,如a++是錯(cuò)誤的;[4]為指針本身和指向的內(nèi)容均為常 量。

Const的初始化 Const 在運(yùn)行時(shí)不能修改值,所以只能在定義時(shí)進(jìn)行初始化。 作為參數(shù)和返回值的const修飾符 其實(shí),不論是參數(shù)還是返回值,道理都是一樣的,參數(shù)傳入時(shí)候和函數(shù)返回的時(shí)候,初始化const變量 1 修飾參數(shù)的const,如 void fun0(const A* a );表示a的指向內(nèi)容不準(zhǔn)修改的。 2 修飾返回值的const,如const A * fun2( );表示a指南內(nèi)容不準(zhǔn)備修改。

Const 的好處是

?關(guān)鍵字const的作用是為給讀你代碼的人傳達(dá)非常有用的信息,實(shí)際上,聲明一個(gè)參數(shù)為常量是為了告訴了用戶這個(gè)參數(shù)的應(yīng)用目的。如果你曾花很多時(shí)間清理其它人留下的垃圾,你就會(huì)很快學(xué)會(huì)感謝這點(diǎn)多余的信息。(當(dāng)然,懂得用const的程序員很少會(huì)留下的垃圾讓別人來(lái)清理的。)

? 通過(guò)給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼。

? 合理地使用關(guān)鍵字const可以使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無(wú)意的代碼修改。簡(jiǎn)而言之,這樣可以減少bug的出現(xiàn)。 Const 一大副作用是,在函數(shù)調(diào)用時(shí),你必須要把參數(shù)調(diào)成const 所要求的形式才能被編譯調(diào)用。有時(shí)這樣花很大功夫才能做到。

C++ const用法說(shuō)明

C++ const 允許指定一個(gè)語(yǔ)義約束,編譯器會(huì)強(qiáng)制實(shí)施這個(gè)約束,允許程序員告訴編譯器某值是保持不變的。如果在編程中確實(shí)有某個(gè)值保持不變,就應(yīng)該明確使用const,這樣可以獲得編譯器的幫助。

1.const 修飾成員變量

#include《iostream》

using namespace std;

int main(){

int a1=3; ///non-const data

const int a2=a1; ///const data

int * a3 = &a1; ///non-const data,non-const pointer

const int * a4 = &a1; ///const data,non-const pointer

int * const a5 = &a1; ///non-const data,const pointer

int const * const a6 = &a1; ///const data,const pointer

const int * const a7 = &a1; ///const data,const pointer

return 0;

}

const修飾指針變量時(shí):

(1)只有一個(gè)const,如果const位于*左側(cè),表示指針?biāo)笖?shù)據(jù)是常量,不能通過(guò)解引用修改該數(shù)據(jù);指針本身是變量,可以指向其他的內(nèi)存單元。

(2)只有一個(gè)const,如果const位于*右側(cè),表示指針本身是常量,不能指向其他內(nèi)存地址;指針?biāo)傅臄?shù)據(jù)可以通過(guò)解引用修改。

(3)兩個(gè)const,*左右各一個(gè),表示指針和指針?biāo)笖?shù)據(jù)都不能修改。

2.const修飾函數(shù)參數(shù)

傳遞過(guò)來(lái)的參數(shù)在函數(shù)內(nèi)不可以改變,與上面修飾變量時(shí)的性質(zhì)一樣。

void testModifyConst(const int _x) {

_x=5;///編譯出錯(cuò)

}

3.const修飾成員函數(shù)

(1)const修飾的成員函數(shù)不能修改任何的成員變量(mutable修飾的變量除外)

(2)const成員函數(shù)不能調(diào)用非onst成員函數(shù),因?yàn)榉莄onst成員函數(shù)可以會(huì)修改成員變量

#include 《iostream》

using namespace std;

class Point{

public :

Point(int _x):x(_x){}

void testConstFunction(int _x) const{

///錯(cuò)誤,在const成員函數(shù)中,不能修改任何類(lèi)成員變量

x=_x;

///錯(cuò)誤,const成員函數(shù)不能調(diào)用非onst成員函數(shù),因?yàn)榉莄onst成員函數(shù)可以會(huì)修改成員變量

modify_x(_x);

}

void modify_x(int _x){

x=_x;

}

int x;

};

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

(1)指針傳遞

如果返回const data,non-const pointer,返回值也必須賦給const data,non-const pointer。因?yàn)橹羔樦赶虻臄?shù)據(jù)是常量不能修改。

const int * mallocA(){ ///const data,non-const pointer

int *a=new int(2);

return a;

}

int main()

{

const int *a = mallocA();

///int *b = mallocA(); ///編譯錯(cuò)誤

return 0;

}

(2)值傳遞

如果函數(shù)返回值采用“值傳遞方式”,由于函數(shù)會(huì)把返回值復(fù)制到外部臨時(shí)的存儲(chǔ)單元中,加const 修飾沒(méi)有任何價(jià)值。所以,對(duì)于值傳遞來(lái)說(shuō),加const沒(méi)有太多意義。

所以:

不要把函數(shù)int GetInt(void) 寫(xiě)成const int GetInt(void)。

不要把函數(shù)A GetA(void) 寫(xiě)成const A GetA(void),其中A 為用戶自定義的數(shù)據(jù)類(lèi)型。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140186
  • CONST
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    8386
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語(yǔ)言之正確使用Const

    ,只不過(guò)這個(gè)值由編譯器限定不允許被修改。C語(yǔ)言關(guān)鍵字const就是用來(lái)限定一個(gè)變量不允許被改變的修飾符(Qualifier)。上述代碼中變量n被修飾
    發(fā)表于 10-07 11:20

    C語(yǔ)言——正確使用const

    這個(gè)值由編譯器限定不允許被修改。C語(yǔ)言關(guān)鍵字const就是用來(lái)限定一個(gè)變量不允許被改變的修飾符(Qualifier)。上述代碼中變量n被修飾
    發(fā)表于 04-23 11:58

    請(qǐng)問(wèn)C++代碼的修飾符該怎么理解?

    有如下的代碼段,寫(xiě)出下面除了宏定義外的其他代碼的真實(shí)代碼(即預(yù)處理后的代碼)。然后寫(xiě)出對(duì)const修飾符的理解(當(dāng)前的代碼用于單片機(jī)中):#define DECL_PC_CMD_FUN(name
    發(fā)表于 11-11 04:35

    請(qǐng)問(wèn)什么是正則表達(dá)式修飾符

    什么是正則表達(dá)式的修飾符
    發(fā)表于 11-04 06:10

    【原創(chuàng)】帶你在單片機(jī)編程中熟練使用const

    const可以用在類(lèi)型說(shuō)明符前,也可以用在類(lèi)型說(shuō)明符后例如:intconsti = 2; 或 constinti=2;4、
    發(fā)表于 06-15 11:00

    C51語(yǔ)言的變量定義方式

    C51 語(yǔ)言的變量定義定義方式:普通變量:(修飾符)數(shù)據(jù)類(lèi)型 [存儲(chǔ)類(lèi)型] 變量名 [= 值]指針變量: (
    發(fā)表于 12-01 06:18

    HAL庫(kù)中__weak修飾符是什么?

    單片機(jī)系統(tǒng)時(shí)鐘是什么?HAL庫(kù)中__weak修飾符是什么?
    發(fā)表于 02-23 07:32

    C語(yǔ)言類(lèi)型修飾符Volatile的使用說(shuō)明

    C語(yǔ)言是我們經(jīng)常需要用到的語(yǔ)言C語(yǔ)言中的類(lèi)型修飾符
    的頭像 發(fā)表于 09-19 10:54 ?3709次閱讀

    如何學(xué)習(xí)c語(yǔ)言C語(yǔ)言學(xué)習(xí)筆記資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何學(xué)習(xí)c語(yǔ)言C語(yǔ)言學(xué)習(xí)筆記資料免費(fèi)下載內(nèi)容包括了:C語(yǔ)言代碼,編
    發(fā)表于 10-17 16:23 ?66次下載

    C語(yǔ)言教程之?dāng)?shù)據(jù)類(lèi)型與運(yùn)算的詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言教程之?dāng)?shù)據(jù)類(lèi)型與運(yùn)算的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:數(shù)據(jù)類(lèi)型
    發(fā)表于 03-01 17:20 ?8次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>教程之?dāng)?shù)據(jù)<b class='flag-5'>類(lèi)型</b>與運(yùn)算<b class='flag-5'>符</b>的詳細(xì)資料<b class='flag-5'>說(shuō)明</b>

    一種修飾符能使變量在處理器復(fù)位而不被初始化

    有一種修飾符能使變量在處理器復(fù)位而不被初始化
    的頭像 發(fā)表于 03-14 15:01 ?4334次閱讀
    一種<b class='flag-5'>修飾符</b>能使變量在處理器復(fù)位而不被初始化

    C51 單片機(jī)的 C 語(yǔ)言中的變量定義與硬件之間的關(guān)系

    C51 語(yǔ)言的變量定義定義方式:普通變量:(修飾符)數(shù)據(jù)類(lèi)型 [存儲(chǔ)類(lèi)型] 變量名 [= 值]指針變量: (
    發(fā)表于 11-23 16:51 ?3次下載
    <b class='flag-5'>C</b>51 單片機(jī)的 <b class='flag-5'>C</b> <b class='flag-5'>語(yǔ)言</b>中的變量定義與硬件之間的關(guān)系

    C#中的兩個(gè)泛型修飾符

    C#中,存在兩個(gè)泛型修飾符:in和out,他們分別對(duì)應(yīng)逆變委托和協(xié)變委托。 我們知道,在C#中要想將一個(gè)泛型對(duì)象轉(zhuǎn)換為另一個(gè)泛型對(duì)象時(shí),必須要將一個(gè)泛型對(duì)象拆箱,對(duì)元素進(jìn)行顯式或隱式轉(zhuǎn)換后重新
    的頭像 發(fā)表于 01-14 11:48 ?1218次閱讀

    Java四種訪問(wèn)修飾符及訪問(wèn)范圍

    public修飾的類(lèi)、類(lèi)屬變量及方法,包內(nèi)及包外的任何類(lèi)均可以訪問(wèn);任何情況下都可以訪問(wèn);如果一個(gè)類(lèi)、類(lèi)屬變量及方法沒(méi)有用任何修飾符,則其訪問(wèn)權(quán)限為默認(rèn)權(quán)限,只認(rèn)包。同包下可以訪問(wèn),同包下子類(lèi)可以訪問(wèn),只要不同包,普通類(lèi)和子類(lèi)都不能訪問(wèn)。
    的頭像 發(fā)表于 02-28 14:35 ?7018次閱讀

    淺析C語(yǔ)言中的變量修飾符

    一、修飾符類(lèi)型51單片機(jī)采用哈佛結(jié)構(gòu)。內(nèi)存空間編址有重疊。可以在不同總線上定義不同的變量。在KEILC51中定義了data、idata、xdata、code幾種域修飾符。這些修飾符決定
    的頭像 發(fā)表于 04-15 08:10 ?1320次閱讀
    淺析<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>中的變量<b class='flag-5'>修飾符</b>