關鍵字static和typedef

2021-10-04 16:34:35 字數 2623 閱讀 4759

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也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...