新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > C語言類型修飾符Const的使用

C語言類型修飾符Const的使用

作者: 時間:2016-11-29 來源:網絡 收藏
  Const也是應該廣泛的關鍵字,表示后面定義有可能是一個不變的常量,但是跟各種數據類型定義組合,能演變出復雜含義.Const 主要有如下應用情況1. 聲明后面是一個常量2. 如果跟指針組合,將形成復雜的組合情況3. 作函數參數數的修飾符.表示不能修改這一參數的值.主要是指針4. 作函數返回值, 表示調用函數不能修改這一參數數的值.主要是指針Const 讓人感到復雜是的,他的位置可以與被修飾的數據類型互換!其它的修飾符沒有這樣用法.這樣換一般情況下是等效的,如 const int c1= 5; 等效于 int const c1=5;但是,我說是但是,如果數據類型是一個指針,互換一樣位置表示完全不同含義,所以const 這 一個用法經常是面試官用來折磨嵌入式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 的位置來確定他的用法.const位于星號的左側,則const就是用來修飾指針所指向的變量,即指針指向為常量;如果const位于星號的 右側,const就是修飾指針本身,即指針本身是常量。因此,[1]和[2]的情況相同,都是指針所指向的內容為常量(const放在變量聲明符的位置無 關),這種情況下不允許對指針指向內容進行更改操作,如不能*a = 3 ;[3]為指針本身是常量,而指針所指向的內容不是常量,這種情況下不能對指針本身進行更改操作,如a++是錯誤的;[4]為指針本身和指向的內容均為常 量。Const的初始化 Const 在運行時不能修改值,所以只能在定義時進行初始化.作為參數和返回值的const修飾符 其實,不論是參數還是返回值,道理都是一樣的,參數傳入時候和函數返回的時候,初始化const變量1 修飾參數的const,如 void fun0(const A* a );表示a的指向內容不準修改的. 2 修飾返回值的const,如const A * fun2( );表示a指南內容不準備修改 Const 的好處是•關鍵字const的作用是為給讀你代碼的人傳達非常有用的信息,實際上,聲明一個參數為常量是為了告訴了用戶這個參數的應用目的。如果你曾花很多時間清理其它人留下的垃圾,你就會很快學會感謝這點多余的信息。(當然,懂得用const的程序員很少會留下的垃圾讓別人來清理的。)• 通過給優(yōu)化器一些附加的信息,使用關鍵字const也許能產生更緊湊的代碼。• 合理地使用關鍵字const可以使編譯器很自然地保護那些不希望被改變的參數,防止其被無意的代碼修改。簡而言之,這樣可以減少bug的出現。Const 一大副作用是,在函數調用時,你必須要把參數調成const 所要求的形式才能被編譯調用.有時這樣花很大功夫才能做到

評論


技術專區(qū)

關閉