关于C以及C++的几个面试题

  1、头文件中的 ifndef/define/endif 干什么用?(5 分)

  答:防止该头文件被重复引用。

  2、#include 和 #include “filename.h” 有什么区别?(5 分)

  答:对于#include ,编译器从标准库路径开始搜索 filename.h

  对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h

  3、const 有什么用途?(请至少说明两种)(5 分)

  答:(1)可以定义 const 常量,(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

  4、在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”? (5 分)

  答:C++语言支持函数重载,C 语言不支持函数重载。函数被C++编译后在库中的名字

  与C 语言的不同。假设某个函数的原型为: void foo(int x, int y);该函数被C 编译器编译后在库中的名字为_foo , 而C++编译器则会产生像_foo_int_int 之类的名字。C++提供了C 连接交换指定符号extern“C”来解决名字匹配问题。

  5、请简述以下两个for 循环的优缺点(5 分)

  for (i=0; i {

  if (condition)

  DoSomething();

  else

  DoOtherthing();

  }

  if (condition)

  {

  for (i=0; i DoSomething();

  }

  else

  {

  for (i=0; i DoOtherthing();

  }

  优点:程序简洁

  缺点:多执行了N-1 次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。

  优点:循环的效率高

  缺点:程序不简洁

本文已影响6827
上一篇:C语言基础面试笔试题 下一篇:C/C++有关内存的面试思考题

相关文章推荐

|||||