一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言 volatile與const同時使用應注意的問題

C語言 volatile與const同時使用應注意的問題

2020-12-29 15:26C語言教程網 C/C++

“volatile”的含義是“請不要做沒譜的優化,這個值可能變掉的”,而并非“你可以修改這個值”。因此,它們本來就不是矛盾的

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

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

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

“const”含義是“請做為常量使用”,而并非“放心吧,那肯定是個常量”。
“volatile”的含義是“請不要做沒譜的優化,這個值可能變掉的”,而并非“你可以修改這個值”。
因此,它們本來就不是矛盾的。

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

復制代碼 代碼如下:

int i = 5;
const int* p = &i;
*p = 6; // 不可以;
i = 7; // 完全可以,而且那個“const”的“*p”也跟著變成了7。


對于非指針非引用的變量,const volatile同時修飾的意義確實不大。個人覺得。

 

需要明白“volatile”的含義并非是“non-const”。所以他們才可以放在一起。
在C++語言中,const沒有反義詞,如果一個變量沒有const修飾,那它本身就是const的反義詞,而并非加上volatile才是const的反義詞。

兩者同時修飾一個對象的典型情況,是用于驅動中訪問外部設備的只讀寄存器。

留一個問題:const volatile int i=10;這行代碼有沒有問題?如果沒有,那 i 到底是什么 屬性?

回答一:沒有問題,例如只讀的狀態寄存器。它是volatile,因為它可能被意想不到地改變;它是const,因為程序不應該試圖去修改它。volatile和const并不矛盾,只是控制的范圍不一樣,一個在程序本身之外,另一個是程序本身。

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

延伸 · 閱讀

精彩推薦
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
主站蜘蛛池模板: 91制片厂制作果冻传媒123 | 视频网站入口在线看 | 911香蕉视频| 久久水蜜桃亚洲AV无码精品偷窥 | 动漫白丝袜美女羞羞 | 美女撒尿部位无遮挡 | 日本a在线天堂 | 人人干国产 | 波多在线 | 亚洲高清视频在线观看 | 女人全身裸露无遮挡免费观看 | 天堂资源wwww在线看 | 精品视频免费在线 | 亚洲色图第一页 | 精品四虎| 成人欧美视频在线看免费 | 国产亚洲精品自在线亚洲情侣 | 色多多在线视频 | 欧美精品一国产成人性影视 | 欧美亚洲另类在线观看 | 欧美日韩色图 | 日韩欧美高清 | 无套内谢大学生A片 | 亚洲国产精品成人午夜在线观看 | 无码区国产区在线播放 | 日本熟hdx | 青青国产成人久久激情911 | 爱情岛论坛亚洲永久入口口 | 国产成人精品免费视频大全五级 | 亚洲久草视频 | 日本视频在线观看播放 | 国产区综合另类亚洲欧美 | yellow视频在线观看免费 | 欧美成人中文字幕 | 性刺激欧美三级在线现看中文 | 日本一道一区二区免费看 | 女教师的一级毛片 | 四虎一影院区永久精品 | 久久精品国产只有精品 | 国内久久久 | 成人午夜毛片 |