介绍几个H3C 2013年实习生的面试题
1,宏和内联函数的区别
宏定义:
宏是在预处理阶段进行的简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换)。而且对参数不进行任何检查的验证检查。宏的参数是不占内存空间的,因为只是做字符串的替换。
内联函数:
所谓"内联函数"就是将很简单的函数"内嵌"到调用他的程序代码中,目的旨在节约下原本函数调用时的时空开销。但必须注意的是,作为内联函数,函数体必须十分简单,不能含有循环、条件、选择等复杂的结构,否则就不能做为内联函数了。事实上,即便你没有指定函数为内联函数,有的编译系统也会自动将很简单的函数作为内联函数处理;而对于复杂的函数,即便你指定他为内联函数,系统也不会理会的。
2,堆和栈的区别
这个问题我在前面的一篇博文中已经进行了详细的介绍。请看C中进程的内存分配
3,C++中using namespace std 的作用
对于一个存在着标准输入输出的C++控制台程序,一般会在#include <iostream>的下一行发现一句话,using namespace std。这句话其实就表示了所有的标准库函数都在标准命名空间std中进行了定义。其作用就在于避免发生重命名的问题。
关于using namespace *
顾名思义,using namespace * 就表示释放命名空间* 中间的东西。好处在于我们在程序里面就不用在每个函数的头上都加上*::来调用。如果我们不加上using namespace std,那么我们就需要在主函数中的标准输出流cout函数前面加上std,写成std::cout.表示调用std空间里面的标准输出流cout。
4,解释说明main函数参数
int main(int argc, char *argv[])
这两个参数的作用:argc 是指命令行输入参数的个数(以空白符分隔),argv存储了所有的命令行参数 假如你的程序是hello.