C與C 複習雜記

2021-08-21 16:48:04 字數 1662 閱讀 2673

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的結果在執行時才計算。

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給出的是其指標的大小。

初學C ,C與C 雜記

從c到c 兩者比較 c 不允許全域性變數重複定義,結構體定義變數,變數名就是一種資料型別不需要struct,函式定義函式時void和不寫形參都表示無形參,且必須包含返回值型別,三目運算子能作左值 即其結果為變數 const定義變數就是常量,存在符號表中,類似於c裡面的define,但其僅僅為區域性變...

c 學習雜記

概念 物件 object 類 class 物件導向 由類組成 是以介面形式存在 易於移植 可以將每乙個變數都看作是物件 每一種資料型別都可以看做是類 類中分為 public protected private 公有 保護 私有 變數 公有變數 任何人都可以訪問 保護變數 自己與自己派生 繼承的都可以...

C語言 雜記

1 常量溢位 u16 adc temp 0 應為 u32 adc temp 0 for i 0 i 100 i adc temp 100 1.2 資料範圍溢位 將乙個數拆分為n個隨機數 for i 0 i 200 i break 可更正為 for i 0 i 200 i else 小於或等於0xff...