亚洲一级免费看,特黄特色大片免费观看播放器,777毛片,久久久久国产一区二区三区四区,欧美三级一区二区,国产精品一区二区久久久久,人人澡人人草

C語(yǔ)言

C語(yǔ)言volatile與const同時(shí)使用應(yīng)注意的問(wèn)題

時(shí)間:2025-05-14 05:05:39 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

C語(yǔ)言volatile與const同時(shí)使用應(yīng)注意的問(wèn)題

  const最主要的特點(diǎn)就是只讀,有常量、常量指針,如果不是特別小心的分析C語(yǔ)言語(yǔ)句的書寫格式,再加上指針的使用,就特別容易弄錯(cuò)。volatile關(guān)鍵字是一個(gè)類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改,下面就有小編分享C語(yǔ)言volatile與const同時(shí)使用應(yīng)注意的問(wèn)題,歡迎大家學(xué)習(xí)!

  const和volatile放在一起的意義在于:

  (1)本程序段中不能對(duì)a作修改,任何修改都是非法的,或者至少是粗心,編譯器應(yīng)該報(bào)錯(cuò),防止這種粗心;

  (2)另一個(gè)程序段則完全有可能修改,因此編譯器最好不要做太激進(jìn)的優(yōu)化。

  “const”含義是“請(qǐng)做為常量使用”,而并非“放心吧,那肯定是個(gè)常量”。

  “volatile”的含義是“請(qǐng)不要做沒(méi)譜的優(yōu)化,這個(gè)值可能變掉的”,而并非“你可以修改這個(gè)值”。

  因此,它們本來(lái)就不是矛盾的。

  const修飾的變量不允許這里修改不代表不允許別處修改,比如:

  復(fù)制代碼 代碼如下:

  int i = 5;

  const int* p = &i;

  *p = 6; // 不可以;

  i = 7; // 完全可以,而且那個(gè)“const”的“*p”也跟著變成了7。

  對(duì)于非指針?lè)且玫淖兞浚琧onst volatile同時(shí)修飾的意義確實(shí)不大。個(gè)人覺得。

  需要明白“volatile”的含義并非是“non-const”。所以他們才可以放在一起。

  在C++語(yǔ)言中,const沒(méi)有反義詞,如果一個(gè)變量沒(méi)有const修飾,那它本身就是const的反義詞,而并非加上volatile才是const的反義詞。

  兩者同時(shí)修飾一個(gè)對(duì)象的典型情況,是用于驅(qū)動(dòng)中訪問(wèn)外部設(shè)備的只讀寄存器。

  留一個(gè)問(wèn)題:const volatile int i=10;這行代碼有沒(méi)有問(wèn)題?如果沒(méi)有,那 i 到底是什么 屬性?

  回答一:沒(méi)有問(wèn)題,例如只讀的狀態(tài)寄存器。它是volatile,因?yàn)樗赡鼙灰庀氩坏降馗淖?它是const,因?yàn)槌绦虿粦?yīng)該試圖去修改它。volatile和const并不矛盾,只是控制的范圍不一樣,一個(gè)在程序本身之外,另一個(gè)是程序本身。

  回答二:沒(méi)問(wèn)題,const和volatile這兩個(gè)類型限定符不矛盾。const表示(運(yùn)行時(shí))常量語(yǔ)義:被const修飾的對(duì)象在所在的作用域無(wú)法進(jìn)行修改操作,編譯器對(duì)于試圖直接修改const對(duì)象的表達(dá)式會(huì)產(chǎn)生編譯錯(cuò)誤。volatile表示“易變的”,即在運(yùn)行期對(duì)象可能在當(dāng)前程序上下文的控制流以外被修改(例如多線程中被其它線程修改;對(duì)象所在的存儲(chǔ)器可能被多個(gè)硬件設(shè)備隨機(jī)修改等情況):被volatile修飾的對(duì)象,編譯器不會(huì)對(duì)這個(gè)對(duì)象的操作進(jìn)行優(yōu)化。一個(gè)對(duì)象可以同時(shí)被const和volatile修飾,表明這個(gè)對(duì)象體現(xiàn)常量語(yǔ)義,但同時(shí)可能被當(dāng)前對(duì)象所在程序上下文意外的情況修改。另外,LS錯(cuò)誤,const可以修飾左值,修飾的對(duì)象本身也可以作為左值(例如數(shù)組)。

【C語(yǔ)言volatile與const同時(shí)使用應(yīng)注意的問(wèn)題】相關(guān)文章:

C語(yǔ)言的const使用方法07-02

C語(yǔ)言中volatile的使用方法09-30

C語(yǔ)言關(guān)鍵字const的使用09-02

C語(yǔ)言中volatile的含義08-14

總結(jié)C語(yǔ)言中const關(guān)鍵字的使用08-22

C語(yǔ)言中const關(guān)鍵字的使用方法10-02

C語(yǔ)言關(guān)鍵字const用法09-06

C語(yǔ)言中volatile關(guān)鍵字分析07-26

C語(yǔ)言中關(guān)鍵字volatile的含義07-22