基础知识 | 每日一练(175)

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

读者:C是个伟大的语言还是别的?哪个其它语言可以写象a+++++b这样的代码?

小林:在C语言中, 写成这样也是没有意义的。词汇分析的规则规定, 在一个简单的从左到右扫描中的每个点, 最长的记号被划分, 不管这样出来的记号序列是否有意义。问题中的片段被解释为:a ++ ++ + b语法上是个不合法的表达式。

读者:为什么C语言没有嵌套函数?

小林:实现嵌套函数不是件简单的事, 它们需要可以正当的访问包含函数的本地变量, 为了简单化, 这个功能是被故意舍弃的。gcc 的扩展功能允许函数嵌套。许多可能使用嵌套函数的地方 (例如 qsort 的比较函数), 一个充分但少许麻烦的解决方法是使用一个定义为静态 (static) 的邻近函数, 如果需要, 可以通过少量静态变量进行通讯。一个干净些的方法是传递一个包含所需内容的结构指针, 虽然 qsort 不支持这种方法。

正文完