实际参数、格式参数、虚拟参数以及实际参数和形式参数之间有啥区别? [复制]

Posted

技术标签:

【中文标题】实际参数、格式参数、虚拟参数以及实际参数和形式参数之间有啥区别? [复制]【英文标题】:What's the difference between actual arguments, format arguments, dummy arguments and actual and formal parameters? [duplicate]实际参数、格式参数、虚拟参数以及实际参数和形式参数之间有什么区别? [复制] 【发布时间】:2018-09-30 16:50:12 【问题描述】:

我认为上面提到的一些只是同义词,但哪些是同义词?如果我错了也请纠正我:在一个函数中让我们说主函数,括号之间的数据是参数/参数?

【问题讨论】:

【参考方案1】:

参数在函数定义中定义。它是函数执行期间参数的占位符。

void printMessage(string message)  //message is a parameter. 

 

参数是在调用函数时传递给函数的值。

printMessage("Hello World"); //"Hello World" is an argument.

虽然有人认为参数是参数。

【讨论】:

更准确地说,指向"Hello WOrld" 的指针是实际参数,而不是msg. 后者是C 中不存在的引用调用。 是的,你是对的。我有正确的答案。谢谢。【参考方案2】:

将值传递给函数有两种观点:

函数本身在编译时有一个参数(或形参)。 IE。 …

void f( int a )

  …

…有(正式的)参数a

在运行时调用函数时,有一个a 代表的值。这是参数(实际参数):

f( 5 )

这里5是实参(实参)。

所以调用将实参/实参映射到形参。

在 C 中,在某些情况下,您可以将可变数量的参数传递给函数。也就是说,如果函数有一个开放的参数列表:

f( int a, ... )

在许多情况下,第一个参数是需要附加参数的格式字符串。即:

printf( "%d items", 5 );

在这种情况下,"%d items" 是一个格式字符串(格式参数),它告诉函数在 " items" 之前插入第二个参数的字符串表示形式。

但可变数量的参数不限于格式字符串。 IE。以下示例都是(正式)有效的调用:

f( int a, ... )  … 

f( 5 );
f( 6, 2, 3 )

我认为,虚拟参数/参数有不同的含义。它可以是不在函数内部使用的参数(因此是调用中的参数)。它可以是可选参数,如果在调用中没有参数,则获取默认值。 (这个概念在 C 中不存在,但在其他编程语言中。)

【讨论】:

对于void f( int a )f(5.3),您可以将赋予函数的5.3 与传递给f() 的5 称为什么? 这超出了 Q 的范围。但是,阅读标准的第 3.3 和 6.5.2.2 部分可能会对您有所帮助。

以上是关于实际参数、格式参数、虚拟参数以及实际参数和形式参数之间有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

python 函数

函数参数注意事项

java方法参数传递方式只有----值传递!

C++中函数参数以及Lambda 函数与表达式

C语言中实际参数和形式参数的设置及传递方式

函数的格式