C/C++经典面试题 面试题1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入ex tern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。 说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。 面试题2:写出bool 、int、 float、指针变量与“零值”比较的if 语句 bool 型数据: if( flag ) { A; } else { B; } int 型数据: if( 0 != flag ) { A; } else { B; } 指针型数: if( NULL == flag ) { A; } else { B; } float 型数据: if ( ( flag >= NORM ) && ( flag <= NORM ) ) { A; 2 } 注意:应特别注意在int、指针型变量和“零值”比较的时候,把“零值”放在左边,这样当把“==”误写成“=”时,编译器可以报错,否则这种逻辑错误不容易发现,并且可能导致很严重的后果。 面试题3:sizeof 和strlen 的区别 sizeof 和strlen 有以下区别: sizeof 是一个操作符,strlen 是库函数。 sizeof 的参数可以是数据的类型,也可以是变量,而strlen 只能以结尾为‘\0‘的字符串作参数。 编译器在编译时就计算出了sizeof 的结果。而strlen 函数必须在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而strlen 计算的是字符串实际的长度。 数组做sizeof 的参数不退化,传递给strlen 就退化为指针了。 注意:有些是操作符看起来像是函数,而有些函数名看起来又像操作符,这类容易混淆的名称一定要加以区分,否则遇到数组名这类特殊数据类型作参数时就很容易出错。最容易混淆为函数的操作符就是 sizeof。 面试题4:C 语言的关键字 static 和 C++ 的关键字 static 有什么区别 在C 中static 用来修饰局部静态变量和外部静态变量、函数。而C++中除了上述功能外,还用来定义类的成员变量和函数。即静态成员和静态成员函数。 注意:编程时 static 的记忆性,和全局性的特点可以让在不同时期调用的函数进行通信,传递信息,而 C++的静态成员则可以在多个对象实例间进行通信,传递信息。 面试题5:C中的malloc 和C++中的new 有什么区别 malloc 和new 有以下不同: (1)new、delete 是操作符,可以重载,只能在C++中使用。 (2)malloc...