static關鍵字至少有下列
n個作用:
(1)函式體內
static
變數的作用範圍為該函式體,不同於
auto
變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值; (2
)在模組內的
static
全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問; (3
)在模組內的
static
函式只可被這一模組內的其它函式呼叫,這個函式的使用範圍被限制在宣告它的模組內; (4
)在類中的
static
成員變數屬於整個類所擁有,對類的所有物件只有乙份拷貝; (5
)在類中的
static
成員函式屬於整個類所擁有,這個函式不接收
this
指標,因而只能訪問類的
static
成員變數。
const關鍵字至少有下列
n個作用:
(1)欲阻止乙個變數被改變,可以使用
const
關鍵字。在定義該
const
變數時,通常需要對它進行初始化,因為以後就沒有機會再去改變它了; (2
)對指標來說,可以指定指標本身為
const
,也可以指定指標所指的資料為
const
,或二者同時指定為
const;
(3)在乙個函式宣告中,
const
可以修飾形參,表明它是乙個輸入引數,在函式內部不能改變其值; (4
)對於類的成員函式,若指定其為
const
型別,則表明其是乙個常函式,不能修改類的
成員變數; (5
)對於類的成員函式,有時候必須指定其返回值為
const
型別,以使得其返回值不為「左值」。
例如:const classa operator*(const classa& a1,const classa& a2);
operator*的返回結果必須是乙個
const
物件。如果不是,這樣的****也不會編譯出錯:
classa a, b, c;
(a * b) = c; // 對
a*b的結果賦值
操作(a * b) = c
顯然不符合程式設計者的初衷,也沒有任何意義。
const int * gr; 指標指向的資料唯讀,指標可以修改
int const * gr; 指標指向的資料唯讀,指標可以修改
例如銀行的個人賬戶,可以在查訊伺服器上,查詢自己賬戶的餘額,但是不能修改自己的餘額。不過指向自己賬戶的指標是可以修改的,因為允許任何人檢視
int *const gre; 指標是唯讀的,指標指向的資料可以修改
例如訪問款機,個人用的的指標指向自己的餘額等資料,取錢之後,餘額等資料會改變,但是不可以改變使用者指標,就相當於你不可以進入別人賬戶
const int * const g;
int const * const t ;
這兩條語句指標和指標所指向的資料都是唯讀的。
//對於銀行的職員來說,無論是使用者還是使用者資料他都沒有許可權修改,只有讀取和統計的許可權。
總結:const 在 * 之前,指標指向的資料唯讀;const在 * 之後,指標唯讀。
關鍵字static和const
static在c語言中的作用 static修飾區域性變數,改變區域性變數的生命週期,但是不改變其作用域,生命週期直到檔案銷毀。static修飾全域性變數,改變全域性變數的連線屬性,只能在本檔案中被使用,使用extern外部宣告也不行。static在c 的作用 宣告為static的類成員,成為類的靜態...
static關鍵字和const關鍵字的作用
static關鍵字至少有下列n個作用 1 函式體內static變數的作用範圍為該函式體,不同於auto變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值 2 在模組內的static全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問 3 在模組內的static函式只可被這...
C C 關鍵字 static 和 const
參考 1.靜態全域性變數和函式 靜態全域性變數 static a 靜態函式 static void myfunc 2.靜態區域性變數 靜態區域性變數 每次呼叫該函式a都會加1,不會被重新初始化為0。void myfunc 3.靜態類成員變數和函式 類 class myclass 定義並初始化靜態成員...