一、static關(guān)鍵字
static關(guān)鍵字的作用有如下兩個:
- 修飾存儲類型,使之成為靜態(tài)存儲類型。其中,在函數(shù)內(nèi)定義的靜態(tài)局部變量,存放于內(nèi)存中的靜態(tài)區(qū),所以即使函數(shù)運行結(jié)束,也不會被銷毀,函數(shù)下次運行時,仍能取到它的值。在函數(shù)外定義的靜態(tài)全局變量,作用域僅限于定義該變量的文件中,不能被其他文件通過extern引用。
- 修飾鏈接屬性,使之成為內(nèi)部鏈接屬性。靜態(tài)函數(shù)只能在聲明它的源文件中使用。
二、const關(guān)鍵字
const關(guān)鍵字的作用有如下三個:
- 1、聲明常變量,是的指定的變量不能被修改。
const int a = 1; // a的值不能被修改
const int *p1; // p1為指向整型常量的指針,p1的值可以修改,但是p1指向的值不能修改
int *const p2; // p2為指向整型的常量指針,p2的值不能修改,但是p2指向的值可以修改
const int *const p3; // p3為指向整型常量的常量指針,p3及其指向的值都不能修改
- 2、修飾函數(shù)形參,使其在函數(shù)內(nèi)部不能被修改。
- (int)square:(const int)a {
return a*a;
}
- 3、修飾函數(shù)返回值,使其不能被修改。
三、sizeof關(guān)鍵字
sizeof是在斌阿姨階段處理,且不能被編譯為機器碼。sizeof的結(jié)果等于對象或類型所占的內(nèi)存字節(jié)數(shù)。sizeof的返回值類型為size_t;
- 變量
int a; // sizeof(a)為4
- 指針
int *p; // sizeof(p)為4
- 數(shù)組
int a[5]; // sizeof(a)為4*5(數(shù)組大?。?int b[0]; // sizeof(b)為0
- 結(jié)構(gòu)體
struct(int a; char c)s; // sizeof(s)為8,與結(jié)構(gòu)體字節(jié)對齊有關(guān)
【注1】展開后的結(jié)構(gòu)體的第一個成員的偏移量應(yīng)當(dāng)是被展開的結(jié)構(gòu)體中最大的成員的整數(shù)倍。
【注2】結(jié)構(gòu)體大小必須是所有成員大小的整數(shù)倍,這里所有成員計算的是展開后的成員,而不是將嵌套的結(jié)構(gòu)體當(dāng)做一個整體。
【注3】不能對結(jié)構(gòu)體中的位域成員使用sizeof。
- void
sizeof(void) // 1
sizeof(void *) // 4