《c和指针》笔记5

递归

  C通过运行时堆栈支持递归函数。的哦贵函数就是直接或间接调用自身的函数。

  递归函数所需要的2个特性:

    1、存在限制条件,当符合这个条件时递归便不再继续。

    2、每次调用之后越来越接近这个限制条件。

  递归函数在实现方面更加接近问题的抽象定义,也更加清晰,然而在运行时的开销却是非常巨大的。

  因此在某些情况下应该考虑用迭代来替代递归,使用递归的时候要慎重考虑。对于开销以及代码实现的清晰度上的抉择要慎重。

可变参数

  可变参数与C#的params很相似,但是C中是以省略号(...)来表示的,不同的地方是:

    1、C中的可变参数必须从头到尾按顺序逐个访问。

    2、可变参数没有原型,所以所有作为可变参数传递给函数的值都将执行缺省(默认)参数类型提升。

    3、va_arg无法正确识别作用域参数之上的缺省类型提升,在调用的时候容易制定错误的类型,导致一些无法预测的错误。

    4、需要指定可变参数的长度变量。

  *由于char、short、float类型实际上是以int或double类型的值传递给函数,所以在va_arg中使用后面这些类型时应该小心。

  今天的学习笔记就到这里,明天继续,加油!

原文地址:https://www.cnblogs.com/ahl5esoft/p/2554220.html