You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实参、格式参数、哑元参数与形参的区别及术语辨析

嘿,这个问题问得好!编程里的术语混淆太常见了,尤其是这种跨语境、带历史遗留的叫法,我给你理得明明白白:

术语定义与核心区别

先从最基础的一对核心概念说起,其他术语都是围绕它们衍生的:

  • 形参(Formal Parameters):函数定义时括号里写的变量名,是用来接收调用时传入值的「占位符」。比如void calculate(int a, int b)里的a和b,属于函数签名的一部分,只在函数内部有效。
  • 实参(Actual Arguments):调用函数时实际传入的具体值或表达式,是真正给函数的输入数据。比如calculate(5, 3)里的5和3,会被赋值给对应的形参。

再看另外两个术语:

  • 哑元参数(Dummy Arguments):这是形参的同义词,早期像Fortran这类语言里常用这个叫法,尤其用来强调那些「占位置但实际没被用到」的形参(比如为了兼容旧接口保留的参数),本质还是函数定义时的占位符。
  • 格式参数(Format Arguments):这是实参的一个特定场景子集,特指格式化字符串时传入的参数。比如C语言printf("Score: %d", score)里的score,Pythonprint(f"Name: {name}")里的name,都是格式参数——它们属于实参,但只针对格式化操作这个场景。
同义词确认与认知纠正

同义词梳理

  • 形参(Formal Parameters) ↔ 哑元参数(Dummy Arguments):完全同义,只是不同语境/年代的称呼,哑元参数更偏向强调「占位」属性,但核心都是函数定义时的参数。
  • 格式参数(Format Arguments) ⊂ 实参(Actual Arguments):格式参数是实参的一部分,只在格式化场景下这么叫,不是完全等同的同义词。

关于main函数括号内容的纠正

你问的「main函数等函数中,括号内的数据是否属于parameters/arguments?」——得分两种情况看:

  1. 当你定义main函数时,比如int main(int argc, char *argv[]),括号里的argc和argv是形参(Formal Parameters/哑元参数),因为这是函数定义阶段的占位符。
  2. 当程序启动时,操作系统会自动调用main函数,传入的实际命令行参数(比如参数数量、参数列表)就是实参(Actual Arguments)——只不过这个调用是系统完成的,不是我们手动写代码触发的。

给你个直观的代码例子:

// 这里的argc、argv是形参(formal parameters/dummy arguments)
int main(int argc, char *argv[]) {
    // 调用printf时,argc是格式参数(属于实参的一种)
    printf("你传入了%d个命令行参数\n", argc);
    return 0;
}

内容的提问来源于stack exchange,提问作者Hassaan Arif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:16:09