实际参数、格式参数、虚拟参数以及实际参数和形式参数之间有啥区别? [复制]
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 部分可能会对您有所帮助。以上是关于实际参数、格式参数、虚拟参数以及实际参数和形式参数之间有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章