《c和指针》笔记5
遞歸
C通過運(yùn)行時堆棧支持遞歸函數(shù)。的哦貴函數(shù)就是直接或間接調(diào)用自身的函數(shù)。
遞歸函數(shù)所需要的2個特性:
1、存在限制條件,當(dāng)符合這個條件時遞歸便不再繼續(xù)。
2、每次調(diào)用之后越來越接近這個限制條件。
遞歸函數(shù)在實(shí)現(xiàn)方面更加接近問題的抽象定義,也更加清晰,然而在運(yùn)行時的開銷卻是非常巨大的。
因此在某些情況下應(yīng)該考慮用迭代來替代遞歸,使用遞歸的時候要慎重考慮。對于開銷以及代碼實(shí)現(xiàn)的清晰度上的抉擇要慎重。
可變參數(shù)
可變參數(shù)與C#的params很相似,但是C中是以省略號(...)來表示的,不同的地方是:
1、C中的可變參數(shù)必須從頭到尾按順序逐個訪問。
2、可變參數(shù)沒有原型,所以所有作為可變參數(shù)傳遞給函數(shù)的值都將執(zhí)行缺省(默認(rèn))參數(shù)類型提升。
3、va_arg無法正確識別作用域參數(shù)之上的缺省類型提升,在調(diào)用的時候容易制定錯誤的類型,導(dǎo)致一些無法預(yù)測的錯誤。
4、需要指定可變參數(shù)的長度變量。
?
*由于char、short、float類型實(shí)際上是以int或double類型的值傳遞給函數(shù),所以在va_arg中使用后面這些類型時應(yīng)該小心。
?
今天的學(xué)習(xí)筆記就到這里,明天繼續(xù),加油!
轉(zhuǎn)載于:https://www.cnblogs.com/ahl5esoft/archive/2012/06/19/2554220.html
總結(jié)
- 上一篇: 阿姨洗铁路是什么歌?
- 下一篇: AS3版本的MaxRects算法测试