const,static,volatile關鍵字的作用


const關鍵字:
  1.欲阻止一個變量被改變,可使用const,在定義該const變量時,需先初始化,以后就沒有機會改變他了;
  2.對指針而言,可以指定指針本身為const,也可以指定指針所指的數據為const,或二者同時指定為const;
  3.在一個函數聲明中,const可以修飾形參表明他是一個輸入參數,在函數內部不可以改變其值;
  4.對於類的成員函數,有時候必須指定其為const類型,表明其是一個常函數,不能修改類的成員變量;
  5.對於類的成員函數,有時候必須指定其返回值為const類型,以使得其返回值不為“左值”。
 
static關鍵字:
  1.static局部變量在函數內定義,它的生存期為整個源程序,但是其作用域仍與自動變量相同,只能在定義該變量的函數內使用該變量。退出該函數后, 盡管該變量還繼續存在,但不能使用它。再次調用該函數可以再次使用。
  2.static修飾全局變量的時候,這個全局變量只能在本文件中訪問,不能在其它文件中訪問,即便是extern外部聲明也不可以。
  3.static修飾一個函數,則這個函數的只能在本文件中調用,不能被其他文件調用。Static修飾的局部變量存放在全局數據區的靜態變量區。初始化的時候自動初始化為0;
    (1)不想被釋放的時候,可以使用static修飾。比如修飾函數中存放在棧空間的數組。如果不想讓這個數組在函數調用結束釋放可以使用static修飾
    (2)考慮到數據安全性(當程想要使用全局變量的時候應該先考慮使用static)

  在C++中static關鍵字除了具有C中的作用還有在類中的使用
  在類中,static可以用來修飾靜態數據成員和靜態成員方法
  靜態數據成員
  (1)靜態數據成員可以實現多個對象之間的數據共享,它是類的所有對象的共享成員,它在內存中只占一份空間,如果改變它的值,則各對象中這個數據成員的值都被改變。
  (2)靜態數據成員是在程序開始運行時被分配空間,到程序結束之后才釋放,只要類中指定了靜態數據成員,即使不定義對象,也會為靜態數據成員分配空間。
  (3)靜態數據成員可以被初始化,但是只能在類體外進行初始化,若為對靜態數據成員賦初值,則編譯器會自動為其初始化為0
  (4)靜態數據成員既可以通過對象名引用,也可以通過類名引用。

  靜態成員函數
  (1)靜態成員函數和靜態數據成員一樣,他們都屬於類的靜態成員,而不是對象成員。
  (2)非靜態成員函數有this指針,而靜態成員函數沒有this指針。
  (3)靜態成員函數主要用來方位靜態數據成員而不能訪問非靜態成員。

 

volatile關鍵字:

一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個例子: 
    1). 並行設備的硬件寄存器(如:狀態寄存器) 
    2). 一個中斷服務子程序中會訪問到的非自動變量(Non-automatic variables) 
    3). 多線程應用中被幾個任務共享的變量 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM