說巨集和函式的區別:
巨集做的是簡單的字串替換(注意是字串的替換,不是其他型別引數的替換),而函式的引數的傳遞,引數是有資料型別的,可以是各種各樣的型別.
巨集的引數替換是不經計算而直接處理的,而函式呼叫是將實參的值傳遞給形參,既然說是值,自然是計算得來的.
巨集在編譯之前進行,即先用巨集體替換巨集名,然後再編譯的,而函式顯然是編譯之後,在執行時,才呼叫的.因此,巨集占用的是編譯的時間,而函式占用的是執行時的時間.
巨集的引數是不佔記憶體空間的,因為只是做字串的替換,而函式呼叫時的引數傳遞則是具體變數之間的資訊傳遞,形參作為函式的區域性變數,顯然是占用記憶體的.
函式的呼叫是需要付出一定的時空開銷的,因為系統在呼叫函式時,要保留現場,然後轉入被呼叫函式去執行,呼叫完,再返回主調函式,此時再恢復現場,這些操作,顯然在巨集中是沒有的.
內聯函式與巨集的區別:
1.內聯函式在執行時可除錯,而巨集定義不可以;
2.編譯器會對內聯函式的引數型別做安全檢查或自動型別轉換(同普通函式),而巨集定義則不會;
3.內聯函式可以訪問類的成員變數,巨集定義則不能;
4.在類中宣告同時定義的成員函式,自動轉化為內聯函式。
c 基礎練習
問題 f 土豪學長算成績 題目描述 給協會裡的同學排成績對於土豪學長來說總是乙個很麻煩的事情,因為土豪學長不會使用excel 所以每次他都是手工排序的。現在協會的人數越來越多,手工排序變的不現實了,他希望你能夠幫他寫乙個程式給同學們拍名次。考試的科目有語文,數學,英語,物理,化學,生物。首先按照總分...
C 基礎練習
first 玩家a和玩家b輸入自己的遊戲名稱 2th 第一輪玩家a開始投擲骰子,一次輪流進行 3th 如果玩家a和b的位置重疊了 a撞了b,那麼b退後6格 反之同理 4th 遊戲符號含義 圖例中的符號表示 幸運轉盤 地雷 暫停 時空隧道 1 幸運轉盤 玩家可以有兩個選擇 那麼選擇1 和對方交換位置,...
c基礎練習 檔案練習
1.單字元讀寫 define crt secure no warnings include include includeint main01 char buf this is a test for pfutc for int i 0 i int strlen buf i fclose fp wri...