c 學習筆記

2021-09-23 23:31:39 字數 778 閱讀 7164

fun(a++)與fun(++a)

fun(++a)很好理解了,但是fun(a++)的執行過程呢?我開始以為相當於fun(a)這樣的話傳值a不會變化,但是寫了個demo才知道是相當於fun(a);a = a+1;看彙編**,它是把a加一得操作壓棧的最下面,所以執行完才會執行加一操作。

-使用typedef和預處理巨集的區別是什麼?

typedef和#define都可以用來對已有的資料型別賦予乙個新的別名。而問題的出現是當

我們對指標這種型別的操作時。

typedefs在這個時候能做出正確的處理。看下面的例子:

typedef char *string_t;

#define char *string_d

string_t s1,s2;

string_d s3,s4;

在上面的申明中,s1,s2 和 s3都被申明為字元型指標,而s4卻被申明為字元,這並不是

預期所想得到的結果。

那既然是這樣,為什麼還要使用預處理巨集呢?因為預處理巨集的好處是在使用諸如#ifdef時體現出來的

-怎樣在一行裡交換兩個整型數?

用異或操作符可以做到。

a^ = b^ = a^ = b;

-memcpy()和memmove()的區別是什麼?

其實memcopy 和memmove都可以將記憶體中的某塊中的資訊複製到另一區域。當然,也有小的區別。如果源位址和目標位址有重疊的地方,memcpy並不提供相應的保護機制,而memmove會提供比較全面的保護工作。

另外,memcpy的執行速度要比memmove快。

C 學習筆記( )

一 語法 迴圈 foreach 型別識別符號 in 表示式 code 用法 例子int temp foreach int num in temp 每次從temp取乙個元素賦給num直至取完 console.writeline n num 每行顯示乙個元素 執行結果 c 中唯讀 只寫控制 class ...

C 學習筆記

1.函式特徵 有函式頭和函式體 接受乙個引數 返回乙個值 需要乙個原型。2.c 命名規則 在名稱中只能使用字母字元 數字和下劃線 名稱的第乙個字元不能是數字 區分大寫字母和小寫字母 不能將c 關鍵字用作名稱 以兩個下劃線或下劃線和大寫字母打頭的名稱被保留給實現 編譯器及其使用的資源 使用,以乙個下劃...

c 學習筆記

屬性 屬性開頭字母大寫 屬性可以判斷輸入的非法值 屬性本身不儲存值 依靠字段 索引器 using system using system.collections.generic using system.linq using system.text namespace b try catch exc...