1樓:匿名使用者
當要求使用volatile 宣告的變數的值的時候,系統總是重新從它所在的記憶體讀取資料,即使它前面的指令剛剛從該處讀取過資料。而且讀取的資料立刻被儲存。
通俗的說,就是時刻更新的意思。編譯系統可能會優化程式,常用的變數放在cpu的暫存器裡運算。這時如果你去記憶體中尋找這個變數的話,它可能是個意料之外的值。
但是如果這個變數用volatile宣告的話,每次計算都會直接在記憶體中讀寫值。當然對於大多數程式聲不宣告其實是沒太大關係的,只有在除錯模式下執行,你可以隨時隨地看到記憶體情況的時候,你才能感覺到volative的作用。另外如果這個變數要時刻供其他程式共享,也要宣告為volative。
(volatile unsigned int *)表示式之前加「(型別)」表示強制型別轉換,這裡表示0x7000是一個指向無符號整數的指標。
2樓:路人拉麵
第一個是個變數儲存在記憶體中
第二個是常量,就是數字,預設型別double
volatile 影響編譯器編譯的結果,指出,volatile 變數是隨時可能發生變化的,與volatile變數有關的運算,不要進行編譯優化,以免出錯
3樓:匿名使用者
舉個例子
#define i 1;
if(i)
編譯器可能編譯為if(true)
而加上volatile編譯器則不會做優化處理。
請教C語言問題,忘高手指教下,請教一個C語言問題,忘高手指教下。
注意你的程式,是用指標作為形參。也就是說當你呼叫prt a,b,c 的時候,系統會在prt函式執行中,定義三個區域性變數,int x,int y,int z,這三個指標分別指向你傳入的a,b,c。當你對這三個指標所指向的值做改變的時候,也就是對abc做了改變,這個也就是所謂的傳遞地址。但是請注意,你...
請教一下c語言中結構體中 和 的區別和聯絡,我看到有的地方
如果來變數是定義成一般的結自 構體變數,用 bai.如果變數是定義du成結構體指標變數,則用 即定義zhi了一dao個結構體的變數 例項 後可以用.直接呼叫其內部成員。而定義成結構體的指標則需用指標 來訪問成員。例如 struct student struct student p,q int x x...
用C語言做以下題目,請教高手最好除錯一下!用最簡單的語句哈,要不看不懂哈
0 include main 1 include main 先給你這麼多,不帶要編了 才20分在加點我繼續累累 等待有緣人吧 這都嚇死人了 你一下弄那麼多,誰還想給你編啊,是吧?這也太多了,自己編吧 一道簡單的c語言題目。請教高手詳細解答!謝謝!a 錯誤是因為轉義字元它是由反斜線加一個特定的字元構成...