【问题标题】:Why is printf() method in C designed to accept any number of parameters?为什么 C 中的 printf() 方法设计为接受任意数量的参数?
【发布时间】:2012-09-26 19:50:20
【问题描述】:

我总是问自己这个问题,为什么 C 语言中的 printf() 被设计为接受任意数量的参数,这不是重载吗?如果是的话,纯结构化语言如何包含方法重载等面向对象的语言概念?

【问题讨论】:

标签: c oop printf overloading


【解决方案1】:

这不是重载吗?

不,C 中没有重载。它被称为"variadic function"

不,尽管它出现在 C++ 中而在 C 中不存在,但方法重载并不是一个面向对象的概念。它在非面向对象的相当古老的编程语言(例如 Prolog)中具有突出的特点。

【讨论】:

    【解决方案2】:

    它不是重载.. 任何采用可变数量参数的方法都称为可变参数函数。

    可变参数方法on wiki

    【讨论】:

      【解决方案3】:

      这被称为可变参数(可变参数数量),自 C 语言早期就存在。

      这与重载无关。

      从某种意义上说,它只是“一个开放的原型”,表达了原型并不总是像现在这样严格使用的事实。 C在这个部门的灵活性源于传递参数的方式:参数的清理是调用者的责任,调用者可以知道他们在需要的时间占用了多少空间。

      如果使用相互竞争的调用约定(例如 Pascal 调用约定),则不可能(容易)使用类似的技术

      【讨论】:

        猜你喜欢
        • 2020-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-05
        • 2022-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多