C语言中printf的使用

问题描述 投票:0回答:1

众所周知,c 语言中没有函数重载。但是当我们使用 printf() 时,我们没有向它提供任何参数。这是怎么发生的。 我们在其中传递一个 char 或 float 或 int 或任何其他数据类型变量。(我们传递这些不同数据类型的变量的次数也可能有所不同)。这是如何运作的。 另外,在使用“%s”的字符串情况下,我们传递字符串第一个字符的地址,即仅传递字符串的名称,但在其他数据类型中,我们仅传递变量本身。 即使 c 不支持函数重载,这怎么可能?

c printf
1个回答
1
投票

因为函数的参数只是被压入堆栈。函数签名对编译器很有用,但编译器可以忽略它们,并且正在运行的函数可以继续从堆栈中获取值,直到找到 null(如 C 风格字符串)

我不知道它是如何工作的(我想它依赖于编译器),但这是一个粗略的猜测

© www.soinside.com 2019 - 2024. All rights reserved.