主题:新手上路,问一个有关哑元的问题
raing
[专家分:0] 发布于 2010-09-02 14:30:00
什么叫哑元?
回复列表 (共14个回复)
沙发
jstzhurj [专家分:4680] 发布于 2010-09-02 14:37:00
虚参。
板凳
cgl_lgs [专家分:21040] 发布于 2010-09-02 16:28:00
某个参数如果在子程序或函数中没有用到,那就被称为哑元。这是程序设计语言中的一个术语,不是FORTRAN独有的:)
3 楼
jstzhurj [专家分:4680] 发布于 2010-09-02 16:41:00
函数的形参又称“哑元”,实参又称“实元”。
4 楼
cgl_lgs [专家分:21040] 发布于 2010-09-02 17:08:00
貌似不是吧:)
实参是:
Call abc(cde,efg)
中的cde和efg
而形参则是:
subroutine abc(ccc,eee)
中的ccc和eee
如果俺没记错的话:)
而如果对于子程序abc来说,ccc根本没有被用到,则称ccc为哑元。一般哑元存在的目的是为了某一套函数接口工整,以便于使用函数指针调用:)
5 楼
jstzhurj [专家分:4680] 发布于 2010-09-02 17:37:00
广义,狭义的理解不同而已:
函数过程
FUNCTION 函数名(哑元表) RESULT(结果名)
...
END FUNCTION 函数名
子程序
[RECURSIVE] SUBROUTINE 过程名(哑元表)
...
END [[SUBROUTINE] 过程名]
调用:CALL 过程名(实元表)
6 楼
cgl_lgs [专家分:21040] 发布于 2010-09-02 20:25:00
呵呵,这样啊。那看来咱用的教材不一样:)
在C++的运算符重载中,就会用到哑元以区分i++与++i的区别:)
且在C/C++中,哑元是可以没有变量名的,如:
int fun(int,int a)
{
return a/10*10;
}
则在调用时,第一个参数随便给一个值就行了,因为它终会被丢弃:)
7 楼
BiCGSTAB [专家分:780] 发布于 2010-09-03 01:44:00
[quote]呵呵,这样啊。那看来咱用的教材不一样:)
在C++的运算符重载中,就会用到哑元以区分i++与++i的区别:)
且在C/C++中,哑元是可以没有变量名的,如:
int fun(int,int a)
{
return a/10*10;
}
则在调用时,第一个参数随便给一个值就行了,因为它终会被丢弃:)[/quote]
学习了。
8 楼
yeg001 [专家分:14390] 发布于 2010-09-05 16:49:00
外文书一般叫dummy argument, 似乎fortran书一般就翻译成哑元. 就3楼的描述.
可能是不同书的不同翻译搞得有点乱.
9 楼
BiCGSTAB [专家分:780] 发布于 2010-09-06 09:00:00
[quote]外文书一般叫dummy argument, 似乎fortran书一般就翻译成哑元. 就3楼的描述.
可能是不同书的不同翻译搞得有点乱.[/quote]
你怎知道哑元是从dummy argument翻译过来的?
dummy 假的
dumb 哑的
混淆了吧
我觉得dummy argument就是虚参
10 楼
cgl_lgs [专家分:21040] 发布于 2010-09-06 10:50:00
或许是翻译水平的问题,导致害了一群人。
混淆dummy和dumb的应该是翻译而不是我们。
不过个人还是希望这个错误能从此贴开始纠正过来:)
我来回复