回 帖 发 新 帖 刷新版面

主题:新手上路,问一个有关哑元的问题

什么叫哑元?

回复列表 (共14个回复)

沙发


虚参。

板凳

某个参数如果在子程序或函数中没有用到,那就被称为哑元。这是程序设计语言中的一个术语,不是FORTRAN独有的:)

3 楼


函数的形参又称“哑元”,实参又称“实元”。

4 楼

貌似不是吧:)
实参是:
Call abc(cde,efg)
中的cde和efg
而形参则是:
subroutine abc(ccc,eee)
中的ccc和eee

如果俺没记错的话:)
而如果对于子程序abc来说,ccc根本没有被用到,则称ccc为哑元。一般哑元存在的目的是为了某一套函数接口工整,以便于使用函数指针调用:)

5 楼


广义,狭义的理解不同而已:

函数过程 
FUNCTION 函数名(哑元表) RESULT(结果名) 
... 
END FUNCTION 函数名

子程序 
[RECURSIVE] SUBROUTINE 过程名(哑元表)
 ... 
END [[SUBROUTINE] 过程名]  

调用:CALL 过程名(实元表)

6 楼

呵呵,这样啊。那看来咱用的教材不一样:)
在C++的运算符重载中,就会用到哑元以区分i++与++i的区别:)

且在C/C++中,哑元是可以没有变量名的,如:
int fun(int,int a)
{
    return a/10*10;
}
则在调用时,第一个参数随便给一个值就行了,因为它终会被丢弃:)

7 楼

[quote]呵呵,这样啊。那看来咱用的教材不一样:)
在C++的运算符重载中,就会用到哑元以区分i++与++i的区别:)

且在C/C++中,哑元是可以没有变量名的,如:
int fun(int,int a)
{
    return a/10*10;
}
则在调用时,第一个参数随便给一个值就行了,因为它终会被丢弃:)[/quote]

学习了。

8 楼

外文书一般叫dummy argument, 似乎fortran书一般就翻译成哑元. 就3楼的描述.
可能是不同书的不同翻译搞得有点乱.

9 楼

[quote]外文书一般叫dummy argument, 似乎fortran书一般就翻译成哑元. 就3楼的描述.
可能是不同书的不同翻译搞得有点乱.[/quote]

你怎知道哑元是从dummy argument翻译过来的?
dummy 假的
dumb  哑的
混淆了吧
我觉得dummy argument就是虚参

10 楼

或许是翻译水平的问题,导致害了一群人。
混淆dummy和dumb的应该是翻译而不是我们。

不过个人还是希望这个错误能从此贴开始纠正过来:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册