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

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

【问题讨论】:

    标签: c


    【解决方案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 部分可能会对您有所帮助。
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    相关资源
    最近更新 更多