1.static 修飾區域性變數時,相當於改變了其生命週期,但不改變作用域
2.static 修飾全域性變數,代表該變數僅在本檔案內有效(沒有static 修飾 全域性變數+宣告之後支援跨檔案引用)
3.static 修飾函式,該函式只在本檔案內被呼叫或訪問,不能跨檔案訪問(函式本身在另乙個檔案+宣告之後支援跨檔案引用)
對第一點的演示
沒有static 修飾情況下的區域性變數
出了作用域 i 的生命週期和作用域均無效
每次執行 for 迴圈的時候 i 都會被重新建立與賦值
加上了 static 之後
#include
#include
void
myshow()
intmain()
//printf("%d\n", i); //這條語句如果加上會報錯未定義i 從而能證明i的作用域並未改變
i 只在第一次呼叫的時候建立一次,此後執行i++語句 但注意只改變了 i的 生命週期,但不改變作用域
對第二點的演示
code.c
#include
#include
int g_value =10;
//定義
test.c
#include
#include
extern
int g_value;
// 宣告
intmain()
結果就是輸出10
#include
#include
static
int g_value =10;
//定義
加上static 之後,報警,無法解析的外部符號g_value --鏈結性錯誤
定義與宣告
定義只能定義一次(開闢空間+防止內容),而宣告可以多次宣告
對第三點的演示
code.c
#include
#include
static
void
myshow()
test.c
#include
#include
extern
void
myshow()
;int
main()
與二原理相同,加上static 之後無法解析的外部符號myshow --鏈結性錯誤
全域性變數和函式混用 static
code.c
#include
#include
static
int g_value =10;
//定義
void
myshow()
//如果 static void myshow() 會怎麼樣? 顯然報警告
}
test.c
#include
#include
extern
void
myshow()
;int
main()
#include
#include
typedef
unsigned
int unit;
intmain()
unsigned int 老的型別
unit 新的型別的名字 相當於 int、 char 等等
整型的每一種(int short long longlong)都有無符號(unsigned)和有符號(signed)兩種型別,在預設情況下宣告的整型變數都是有符號的型別,如果需宣告無符號型別的話就需要在型別前加上unsigned。
1、signed是預設的,表示這個變數是有符號的,可以儲存整數和負數。
2、unsigned則需要顯示給出表示這個變數,沒有符號值能儲存數的大小,而且不能表示正負。
signed儲存符號是有代價的,代價就是儲存空間中的乙個位元位專門用來儲存符號,這一位不能表示數值。一般來說,同型別的signed能夠儲存的數的絕對值大小要小於undigned。
4、unsigned的作用就是將數字型別無符號化, 例如 int 型的範圍:-2^31 ~ 2^31 - 1,而unsigned int的範圍:0 ~ 2^32。
static關鍵字和final關鍵字
static記住幾點 1.優先順序高,載入優先物件例項化 2.在記憶體中只分配一次 3.屬於類本身,所有例項共享,一處變,處處變 4.1 static不能訪問沒有static修飾的方法 因為不認識,物件例項後才能在外部使用方法 2 可以訪問static塊 3 未加static的方法可以訪問stati...
final關鍵字 和 static關鍵字
一.final關鍵字的作用 1.使用 final 方法的原因 第乙個原因是把方法鎖定,以防任何繼承類修改它的含義 第二個原因是final修飾的方法效率快。2.final final用於修飾類 成員變數和成員方法。final修飾類,類不能被繼承 final修飾成員方法,方法不能被重寫,但是子類可以用父...
this關鍵字 static關鍵字
1.當成員變數和區域性變數重名,可以用關鍵字this來區分 this 代表物件,代表那個物件呢?當前物件 this就是所在函式所屬物件的引用 簡單說 那個物件呼叫了this所在的函式,this就代表哪個物件 this也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...