「干货」C/C++程序员面试基础知识
小编是一个有着6年工作经验的工程师,关于C++编程,自己有做材料的整合,一个完整的C++编程学习路线,学习资料和工具,能够进我的群10048,-83029收取,免费送给大家,希望你也能凭着自己的努力,成为下一个优秀的程序员
1、问题:Stdio.h 的主要作用?
回答:stdio .h头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出。
2、问题: 、 与 什么意思?
回答:'' 换行, 将当前位置移到下一行开头;
是回车, 将当前位置移到本行开头;
水平制表(HT) (跳到下一个TAB位置。
3、问题:|与|| 、&与&&的区别?
回答:首先 &和|称为位运算符(按位进行与或),&&和||(按结果真假或0/1进行与或)称为逻辑运算符;逻辑运算符性能比较好。
他检查第一个操作数的值,再根据该操作数的值进行操作,可能根本就不处理第二个操作数。使用&&和||运算符来代替&和|,性能会有一定提高。
4、问题: 后缀名为.c与.cpp?
回答:.c是c语言的源程序格式,.cpp是c++语言的源程序格式;C89规定,在任何执行语句之前,在块的开头声明所有局部变量。
在C99以及C++中则没有这个限制,即在首次使用之前,可在块的任何位置都可以声明变量。
5、问题: 不使用任何中间变量如何将a/b的值进行交换?
回答:
①使用加减运算实现交换,a=a+b; b=a-b; a=a-b;(在a+b与a-b可能数据溢出)
②使用局部变量,int temp=a; a=b; b=temp;
③使用异或运算,a^=b; b^=a; a^=b;
6、问题:c和c++有什么不同?
回答:C是一个结构化的语言,重点在于算法和数据结构,对语言本身C是C++的子集。
C程序的设计首先考虑的是如何通过一个过程实现对输入进行运算后输出,对于C++考虑的是如何构造一个对象模型,让这个模型能够匹配对应的问题,通过获取对象的状态信息得到输出或实现过程控制。
因此,C与C++的最大区别在于,他们解决问题的思路方法是不一样的。
C实现了C++中过程化控制及其他相关功能,而在C++中相对于C还有所加强,引入了重载、内联函数、异常处理等,同时拓展了面向对象的设计内容,如类、继承、虚函数、模板等。
附:C是面向过程的、C++面向对象(在C++中一样可以写出与C一样过程化的程序,所以只能说C++具有面向对象的特性)、Java是真正面向对象化的程序。
7、问题: 为什么标准头文件都有
#ifndef _xxxxxx; #define _xxxxxx #endif?
回答:这样定义是为了避免重复定义。重复声明可以,但是重复定义是不可以的。重复声明只要名称完全相同即可。但是重复定义会出现编译错误的,即使同名也不可以。
8、问题: #include<head.h>与#include “head.h”的区别?
回答:尖括号< >表明这个文件是一个工程或标准的头文件,在预处理查找过程中会首先检查系统预定义的目录,如果没有找到就报错。
双引号" "表明这是一个用户自定义的头文件,查找文件的时候会先在当前文件目录中查找,如果没有找到再去系统预定义的目录中查找,如果没有找到再报错。