欢迎来到天天文库
浏览记录
ID:39613133
大小:152.50 KB
页数:15页
时间:2019-07-07
《程序员面试宝典知识点总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序员面试宝典知识点总结【预处理、const与sizeof】1.BNF范式常用的三种语法描述符号是:[]表示[]中的内容可以缺省,也就是[]中的内容可以不写出来;{}表示{}中的内容可以重复有限次,而{}n表示固定重复n次;
2、表示或者。2.编译预处理指令就是在源程序编译之前,由编译程序处理的指令。如:#include“math.h”,#definePI3.14注意:宏不能以“;”结束;宏中应把参数用括号括起来。3.#include“”,#include<>,使用””时,编译程序在系统当前目录与C语言系统指定的INCLUDE目录
3、中查找包含文件,使用<>时,编译程序仅在TC指定的INCLUDE目录中查找包含文件。4.#ifdef宏名字(#ifndef)源程序1#else源程序2#endif在大型软件开发过程中,用户自定义头文件可能会无意识地被直接或间接地重复包含,使用条件编译指令可以有效解决上述问题。5.C语言的整型根据存储长度分为8bit,16bit,32bit,根据存储格式可分为无符号整数和有符号整数。Int16bit(-32768~+32767),unsignedint16bit(0~65535),float32bit,char8bit(-128
4、~+127),unsignedchar8bit(0~255)。6.整型常量+L占8字节;无后缀字母的实数位double型,占用8字节存储;有后缀字母F的实数为float型,占4字节存储;char占1个字节;7.const的用法主要有定义常量、修饰函数参数、修饰函数返回值、函数的定义体等用处。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。8.const常量有数据类型,而#define定义的常量没有数据类型,编译器可以对const进行类型安全检查,而宏定义只进行字符替换,没有类型安全检查,并且在字符
5、替换中可能产生意料不到的错误;有些集成化的调试工具可以对const常量进行调试,但不能对宏常量进行调试。9.内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中,而宏只是一个简单的替换。内联函数要做参数类型检查。10.在C++程序中,类里面的数据成员加上mutable后,修饰为const的成员函数就可以修改它了。11.exp(x)计算ex;log10(x)计算lg(x);pow(x,y)计算xy;ceil(x)求大于或等于x的最小整数;floor(x)求小于或等于x的
6、最大整数。12.后置形式运算规则是先用变量原来的值参与表达式运算,然后对含有后置自加自减运算符的变量进行加减运算。13.C中printf计算参数时是从右到左压栈的。14.C++语言支持函数重载,C语言不支持,C++提供了C连接符号extern“C”解决名字匹配问题。15.指针的大小是一个定值,就是4个字节;对于最初未定大小的数组来说,具体大小由具体的填充值决定,注意要加上隐含的” ”;结构体的长度是最长的数据元素的整数倍;静态变量时存放在全局数据区的,而sizeof计算栈中分配的大小,故计算时不算在内;空类所占空间为1,单一
7、继承和多重继承的空类空间还是1,但虚继承涉及到虚表(虚指针),其占用空间为4;【指针及引用】1.不允许用一个整型常量表达式直接向指针变量赋初值;C语言允许用一个字符串常量初始化一个char*型的指针变量。2.局部数组时局部变量,它所对应的是内存中的栈,全局数组时全局变量,它所对应的是内存中的全局区域。3.指针和引用的区别:(1)非空区别。在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。使用引用的代码效率比使用指针要高;(2)合法性区别。在使用引用之前不需要测试它的合法性,相反,指针则应该总是被测试,防止其为
8、空;(3)可修改区别。指针可以被重新赋值以指向另一个不同的对象,但引用则总是指向在初始化时被指定的对象,以后不能改变,但是指定的对象的内容可以改变;(4)应用区别。总的来说,在以下情况下应该使用指针:一是考虑到存在不指向任何对象的可能,二是需要能够在不同的时间指向不同的对象。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么使用引用。4.句柄和指针式两个截然不同的概念。Windows系统用句柄标记系统资源,用句柄隐藏系统的信息,是个32bit的uint。指针则标记某个物理内存地址。5.智能指针是存储指向动态分配(堆
9、)对象指针的类。指针使用时有一些要注意的地方:有new就要有delete,对COM指针,要AddRef和Release,即这些动作要成对的出现,而往往大家会在这方面犯错误,应运而生的智能指针就是为了解决这个问题。首先把指针变量作为成员变量封装起来,在只能指针类对象离开作用域时
此文档下载收益归作者所有