const , volatile 關鍵字分析

2021-07-26 16:35:50 字數 1301 閱讀 9906

const修飾變數:

在c語言中const修飾的變數是唯讀的,其本質還是變數,不是常量。

const修飾的變數會在記憶體占用空間,不能作為左值進行賦值。

本質上const只對編譯器有用,在執行時無用。因此const修飾的變數可以在程式執行時,通過指針對其進行改變。

const修飾陣列:

在c語言中const修飾的陣列是唯讀的

const修飾的陣列空間內容不可被改變

const修飾指標:

const int* p; //p可變,p指向的內容不可變

int const* p; //p可變,p指向的內容不可變

int* const p; //p不可變,p指向的內容可變

const int* const p; //p和p指向的內容都不可變

口訣:左資料右指標為常量

當const出現在*號左邊時指標指向的資料為常量

當const出現在*後右邊時指標本身為常量,只能指向這乙個位址

const修飾函式引數和返回值:

const修飾函式引數表示在函式體內不希望改變引數的值。

const修飾函式返回值表示返回值不可改變,多用於返回指標的情形。

volatile可理解為「編譯器警告指示字」。

volatile用於告訴編譯器必須每次去記憶體中取變數值

volatile主要修飾可能被多個執行緒訪問的變數。

volatile也可以修飾可能被未知因素更改的變數。

舉例說明:

在執行時,上面例子中的obj一直是10,如果sleep之後有乙個硬體中斷改變了obj的值,如果沒有volatile對obj進行修飾,那麼新的值將無法賦值給b,b仍然等於10.在開始應該定義:

volatile int obj = 10;

注意:

const和volatile兩個關鍵字可以同時修飾乙個變數,

const volatile int i = 0;

該變數不能作為左值,編譯器必須從記憶體中尋找該變數的內容。

C語言關鍵字const volatile的詳細描述

以const關鍵字修飾的物件,其值不能通過賦值或遞增 遞減進行修改。但是可以通過指標訪問的方式修改const修飾物件的值 也會報警告 const int num 20 num 10 賦值出錯 num 遞增出錯 num 遞減出錯 int p p 100 可以通過位址訪問的方式修改const修飾物件的值...

Codeup關鍵路徑 關鍵路徑

時間限制 1 sec 記憶體限制 128 mb 提交 261 解決 90 提交 狀態 討論版 命題人 外部匯入 描述 圖的連線邊上的資料表示其權值,帶權值的圖稱作網。上圖可描述為頂點集為 a,b,c,d,e 邊集及其權值為 始點,終點 權值 a b 3 a c 2 b d 5 c d 7 c e 4...

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...