推荐答案
测试一下
题目
6.2空参数列表
参考答案与知识点
参考答案
初次遇到这个问题时 ,可能认为其过于深奥 。毕竟,谁会调用 &max而不给其参数呢 ?但是,某人可能如下书写 :
$maximum = &max(@numbers);
而@numbers 可能为空 ,例如可能从空文件读入 。因此,你需要知道 ,&max此时会怎样处理呢 ?
子程序第一行将 @_的第一个元素赋给 $max_so_far 。这不会有什么坏影响 ;数组为空 ,shift操作返回 undef给$max_so_f ar。
现在进入 foreach循环体,由于为空 ,循环体一次都不执行 。
现在,Perl返回 $max_so_far 的值 undef。在某种意义下 ,这是正确的答案 ,因为空表中没有最大的元素 。
当然,当调用此子程序时注意返回值可能为 undef,或者保证调用的参数非空 。
涉及知识点
- 可变参数函数va_start要求至少一个命名参数
- C空参数列表的语法错误
- C++可变参数模板空包处理
- max函数空参数的无意义性
- stdarg.h实现原理