技术笔试面试

《用指向函数的指针作函数参数》-由一个技术错误引发的文章

不辩解,开门见山承认错误,防微杜渐。

前几天写过一篇《帮你度过C语言新手阶段》系列之三,其中发生了一个比较严重的技术性错误。错误大体如下:

===

第三十八关:

用指向函数的指针做函数参数:

sub(int (*x1)(int),int (*x2)(int,int));

其实,此处的参数规格完全可以乱写或者不写,因为函数指针只是接受函数的首地址,和后面的参数啥的都没关系。

===

上述表述是完全错误的。请读者们特别留意(在目前的文章中,我已经将错误修改正确了。)

修改后,正确的表述应该是:

===

用指向函数的指针做函数参数:

sub(int (*x1)(int),int (*x2)(int,int));

这里的参数列表可以选择不写(不推荐此种写法),即sub(int (*x1)(),int (*x2)());,不过如果写参数,就必须要写全写正确。

虽然C允许在参数中用()省略掉形参表,但是,从一个良好的程序风格来看,还是应当禁止这样的使用。

===

在此要非常感谢Lee.MaRS指出了此技术错误并在留言贴中清晰的利用实例进行了解释。作为文章撰写者,在此对读者表示道歉,并保证会在以后的文章撰写中,尽一切努力不出技术错误,为读者提供我的最正确的技术心得。

ps: 本来是想bg的,不过后来得知Lee.MaRS不在北京,遗憾遗憾…

over~

发表您的评论

请您放心,您的信息会被严格保密。必填项已标识 *