c++(2)

Const在C(C++)中的作用:

1:用於定義常量:const定義的常量編譯器可以對其進行數據靜態類型安全檢查。

2:Const修飾函數形式參數,輸入參數爲自定義和抽象數據類型時,爲”const&傳遞”。

例:void fun(A const &a)

即加入了引用,變爲引用傳遞。

3:const修飾函數的返回值:如給”指針傳遞”的函數返回值加const,z則返回值不能被直接修改,且返回值只能被賦值給加const修飾的同類型指針。

例:const char *Getchar(void){};

const char *ch = Getchar();

4:const修飾類的成員函數(函數定義體):任何不會修改數據成員的函數都應用const修飾,防止修改數據成員或調用非const成員函數,該方法實現如下:

例:int Getcount(void) const;

 

static在C(C++)中的作用:

1:在函數體中,一個被聲明爲靜態的變量在這一函數被調用的過程中維持其值不變。

2:在模塊內,(但在函數外),一個被聲明爲的變量可以被模塊內所有函數訪問,但不能被模塊外其他函數訪問,他是一個本地的全局變量。

3:在模塊內好,一個被聲明爲靜態的函數只能被這一模塊的其他函數調用。那就是限制在聲明它的模塊的本底範圍內使用。

 

全局變量及局部變量與靜態變量的區別:

局部變量變爲靜態變量改變了它的儲存方式,即改變了它的生存期;

全局變量改變爲靜態變量後改變了它的作用域,限制了它的適用範圍。

且static變量只初始化一次,static函數在內存中僅有一份,而普通函數在每次調用時都複製一次。

 

sizeof與strlen的區別

1.sizeof是操作符,strlen是函數。

2.sizeof操作符的結果類型是size_t,他在頭文件中的typedef爲unsignedint類型,該類型保證能容納實現所建立的最大對象的字節大小。

3.Sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以”\0”結尾的。

4.數組做sizeof的參數不退化,傳遞給strlen就退化爲指針了。

5*.sizeof所求的值在編譯時就計算過了,即sizeof(x)可用來定義數組維數。Strlen的結果在運行時才計算。

  1. sizeof常見形式:sizeof(int)或sizeof(x),即因爲sizeof爲操作符。strlen計算字符串數組長度結果爲寫入字符串的長度,而sizeof計算的是數組所佔內存空間的大小;strlen計算指針指向的字符串的長度,而sizeof計算的時指針佔用的內存空間大小。  

 

sizeof的用途

1.與儲存分配和I/O系統那樣的例程進行通信。

例:void* malloc(szie_t size);

Szie_t fread(void* ptr,size_t size,size_t nmemb,FILE* stream);

2.查看某個類型的對象在內存中所佔的單元字節。

例:void* memset(void* s,int c,sizeof(s));

3.在動態分配一對象時,可以讓系統知道要分配多少內存。

4.便於一些類型的擴充,由於操作數的字節數在實現時可能出現變化,建議在涉及操作數字節大小時用sizeof來代替常量計算。

5.如果操作數是函數中數組形參或函數類型的形參,則sizeof給出的是其指針的大小。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章