static、const和sizeof關(guān)鍵字

一、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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容