1、在c語言中const修飾的變數是唯讀的,其本質還是變數
2、const修飾的變數會在記憶體占用空間
3、本質上const只對編譯器有用,在執行時無用
4、不能直接改變const變數的值,要用指標改變
5、const int cc = 1;
int *p = (int *)&cc;
p = 3;
6、在語言中const修飾的陣列是唯讀的
7、const修飾的陣列空間不可被改變
8、const int * p //p可變,p指向的內容不可變
int const* p //p可變,p指向的內容不可變
int* const p //p不可變,p指向的內容可變
const int * const p //p不可變,p指向的內容不可變
口訣:左數右指
當const出現在*號左邊時指標指向的資料為常量
當const出現在*後右邊時指標本身為常量
9、const修飾函式引數表示在函式體內不希望改變引數的值
10、const修飾函式返回值表示返回值不可改變,多用於返回指標的情形
11、任何的警告都要當做錯誤處理
12、volataile可理解為"編譯器警告指示字"
volatile用於告訴編譯器必須每次去記憶體中取變數值
volatile主要修飾可能被多個執行緒訪問的變數
volatile也可以修飾可能被未知因數更改的變數
13、硬體中斷造成不可預知的錯誤
synchronized和volatile的區別?
一旦乙個共享變數 類的成員變數 類的靜態成員變數 被volatile修飾之後,那麼就具備了兩層語義 1 保證了不同執行緒對這個變數進行操作時的可見性,即乙個執行緒修改了某個變數的值,這新值對其他執行緒來說是 立即可見的。2 禁止進行指令重排序。volatile本質是在告訴jvm當前變數在暫存器 工作...
synchronized和volatile的區別
volatile關鍵字的本質是告訴jvm,該變數在暫存器中的值是不確定的,需要在主存中讀取,而synchronized關鍵字是鎖住當前變數,只有當前執行緒可以訪問,其他執行緒等待。volatile關鍵字的作用 保證變數的可見性和防止指令重排序。1.volatile只能作用於變數,而synchroni...
15分鐘弄懂 const 和 define
1.什麼是const const是c c 中的乙個關鍵字 修飾符 const一般用來定義乙個常量,既然叫做常量,即以後再也不能修改其值.const定義常量 2.什麼是 define?而define,巨集定義,則是一條預編譯指令,編譯器在編譯階段會將所有使用到巨集的地方簡單地進行替換.如下圖所示 巨集...