【C/C++面試必備】volatile 關鍵字 - 有解無憂
文章推薦指數: 80 %
volatile 意思是易變的,是一種型別修飾符,在C/C++中用來阻止編譯器因誤認某段代碼無法被代碼本身所改變,而造成的過度優化,編譯器每次讀取volatile ...
菜單
網站主頁
前端設計
後端開發
.NET開發
軟體設計
企業開發
區塊鏈
移動端開發
軟體工程
資料庫
作業系統
其他
主頁 > 軟體設計 > 【C/C++面試必備】volatile關鍵字
【C/C++面試必備】volatile關鍵字
2021-07-2308:36:48軟體設計
🎈作者:Linux猿
🎈簡介:CSDN博客專家🏆,C/C++、面試、刷題、演算法盡管咨詢我,關注我,有問題私聊!
🎈關注專欄:C/C++面試通關集錦(優質好文持續更新中……)🚀
本文來講解一下C/C++中的關鍵字volatile,在日常的使用中很少使用到,但是,在面試中經常被提起,下面具體來看一下,
volatile的作用是什么呢?
volatile意思是易變的,是一種型別修飾符,在C/C++中用來阻止編譯器因誤認某段代碼無法被代碼本身所改變,而造成的過度優化,編譯器每次讀取volatile定義的變數時,都從記憶體地址處重新取值,
這里就有點疑問了,難道編譯器取變數的值不是從記憶體處取嗎?
并不全是,編譯器有時候會從暫存器處取變數的值,而不是每次都從記憶體中取,因為編譯器認為變數并沒有變化,所以認為暫存器里的值是最新的,另外,通常來說,訪問暫存器比訪問記憶體要快很多,編譯器通常為了效率,可能會讀取暫存器中的變數,但是,變數在記憶體中的值可能會被其它元素修改,比如:硬體或其它執行緒等,
來看一個實際的例子:
#include
總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。
雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。
雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。
2.作業程序總結相比前兩個單元,此單......
uj5u.com2020-09-1005:35:41more
北航OO(2020)第四單元博客作業暨課程總結博客
北航OO(2020)第四單元博客作業暨課程總結博客本單元作業的架構設計在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。
考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。
本單元我......
uj5u.com2020-09-1005:35:48more
BUAA_OO_第四單元
一、UML決議器設計? 先看下題目:第四單元實作一個基于JDK8帶有效性檢查的UML(UnifiedModelingLanguage)類圖,順序圖,狀態圖分析器MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成......
uj5u.com2020-09-1005:35:54more
6.1邏輯運算子
邏輯運算子1. &&短路與運算式1&&運算式201.運算式1為true并且運算式2也為true整體回傳為true02.運算式1為false,將不會執行運算式2整體回傳為false03.只要有一個運算式為false整體回傳為false2. ||短路或運算式1||運算式2......
uj5u.com2020-09-1005:35:56more
BUAAOO第四單元&課程總結
1.第四單元:StarUml檔案決議本單元采用了圖模型決議UML。
UML檔案可以抽象為圖、子圖、邊的邏輯結構。
在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。
采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。
這里借鑒了一些......
uj5u.com2020-09-1005:36:06more
談談我對C#多型的理解
面向物件三要素:封裝、繼承、多型。
封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。
今天,我們就來講講多型的理解。
我們應該經常會看到面試題目:請談談對多型的理解。
其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。
具體實作方式有三種。
一、多載多載很簡單。
p......
uj5u.com2020-09-1005:36:09more
Python資料驅動工具:DDT
背景python的unittest沒有自帶資料驅動功能。
所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。
DDT是“Data-DrivenTests”的縮寫。
資料:http://ddt.readthedocs.io/en/latest/使用方法dd.......
uj5u.com2020-09-1005:36:13more
Python里面的xlrd模塊詳解
那我就一下面積個問題對xlrd模塊進行學習一下:1.什么是xlrd模塊?2.為什么使用xlrd模塊?3.怎樣使用xlrd模塊?1.什么是xlrd模塊??python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。
今天就先來說一下xl......
uj5u.com2020-09-1005:36:28more
當我們創建HashMap時,底層到底做了什么?
jdk1.7中的底層實作程序(底層基于陣列+鏈表)在我們newHashMap()時,底層創建了默認長度為16的一維陣列Entry[]table。
當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候:首先,呼叫key1所在類的hashCode()計算key1......
uj5u.com2020-09-1005:36:38more
最新发布
想在$(document).ready()中使用函式
我有一個類似的問題之前,我的問題是關于如何在網路瀏覽器控制臺中訪問所有的JavaScript函式,即使它們在window.onload=function(){//codeandfunctions}內,但這次我想用jQu...
uj5u.com2021-10-1615:31:25more
在AndroidStudio中允許HTTP下載
我在AndroidStudio中得到了以下錯誤:>Couldnotdownloadbuilder-4.1.2.jar(com.android.tools.build:builder:4.1.2)
>無法下載builder-4.1.2.jar(com.android.tools....
uj5u.com2021-10-1615:31:06more
如何抑制gradle關于DeprecatedGradle特性的警告?
我使用的是最新的Gradlev7.2。
當我編譯的時候,它給了我一個警告...
uj5u.com2021-10-1615:30:48more
Gradle7.2Java17Build問題java.lang.NullPointerException。
無法
>Task:compileJava
注意:有些輸入檔案使用或覆寫了已廢棄的API。
注意:用-Xlint:deprecationfor詳細資訊進行重新編譯。
在編譯器(17)中發生了一個例外。
請通過Java錯誤...
uj5u.com2021-10-1615:30:05more
為什么我在JUnit4中得到這個例外?
我是JUnit測驗和Gradle的新手,我試著做了我的第一個簡單的測驗,但它們并不作業。
這是我的測驗代碼:這是我的測驗代碼。
importorg.junit.Test;
importstaticorg.junit.Ass...
uj5u.com2021-10-1615:28:38more
在模擬類中使用pytest夾具
我需要使用一個夾具,在一個將用于模擬第三方庫的類中準備一些資料。
現在,我有一個相當于這樣的方案:)
deffile(tmpdir_factory)。
""創建一個模擬檔案的長程序。
""。
....
uj5u.com2021-10-1615:27:47more
不能在型別引數化方法中隱含地將子類轉換為父類
我最近不得不幫助解決某人在從泛型方法中回傳時遇到的問題,雖然有多個問題需要解決,但我理解并能解釋所有問題--除了讓編譯器接受回傳型別這一最后障礙。
盡管我最終成功地讓程...
uj5u.com2021-10-1615:27:39more
JavaObjectMapper.readValue將通用型別變成LinkedHashMap
@Service
publicclassPokemonManagerimplementsPokemonService{
privateHttpResponse
interfaceBinder
VB,item:T)
}...
uj5u.com2021-10-1615:23:51more
友情鏈接
有解無憂
延伸文章資訊
- 1面試C/C++ 觀念整理
這裡有些題目是來自網路上MTK面試的C考古題,另外又加入了一些易搞混的觀念 ... 一個定義為volatile 的變量是說這變量可能會被意想不到地改變(尤其在 ...
- 2嵌入式的面試題 - 立你斯學習記錄
在定義常量時,為什麼推薦使用const,而不是#define。 20、C語言的volatile的含義是什麼。使用時會對編譯器 ...
- 3面试官最爱的volatile 关键字,这些问题你都搞懂了没?
volatile变量规则:对一个volatile域的写,happens-before于任意后续对这个volatile域的读。 传递性:如果(A)happens-before(B),且(B)hap...
- 4volatile关键字有什么作用- C语言面试宝典 - 黑马程序员教程
黑马程序员教程前端面试宝典模块专注提供各类C语言开发面试题及答案,致力收集C语言 ... C/C++ Volatile变量,与非Volatile变量之间的操作,是可能被编译器交换顺序的。
- 5C++常见面试题(11)——volatile_哎呦 - CSDN博客
本文主要介绍在C/C++语言中,volatile关键字的相关内容。1 概述1.1 why volatilevolatile 关键词,最早出现于19世纪70年代, ...