
C++面试
文章平均质量分 92
岳飞传
细节之中自有天地,整洁成就卓越代码
展开
-
Q11 static 关键字
1.static全局变量和普通全局变量的区别:普通全局变量的作用域是整个源程序,而static全局变量则限制了作用域,即只字定义该变量的源文件内有效,在同一源程序的其他文件中不能使用它,防止在其他文件单元中被引用。 2. static局部变量改变了存储方式,即改变了它的生存周期,其只被初化一次,下一次依据上一次结果值。 3. static 函数:其作用域仅在本文件,只在当前源文件中使用的函数应该原创 2015-06-16 21:26:21 · 571 阅读 · 0 评论 -
Q17 sizeof与strlen的区别
sizeof是操作符,strlen是函数sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以“、0”结尾的。在计算字符串数组的长度上有区别:char str[20]="0123456789";int a=strlen(str);int b=sizeof(str);a 计算的是以0x00结束的字符串(不包括0x00结束符),所以a=10;b 计算的则是分配是数组st原创 2015-06-16 22:24:21 · 740 阅读 · 0 评论 -
指针和引用的区别
1 初始化要求不同:引用在创建的同时必须初始化,即引用到一个有效对象;而指针在定义的时候不必初始化,可以在定义的后面的任何地方重新赋值。 2. 可修改性不同:引用一旦被初始化为指向一个对象,他就不能被改变为另一个对象的引用;而指针在任何时候都可以改变为指向 另一个对象。给引用赋值并不是改变他和原始对象的绑定关系。 3. 不存在null引用,引用不能指向空值的引用,他必须总是指向某个对象;而指针则原创 2015-06-21 22:25:49 · 542 阅读 · 0 评论 -
Q22 内联函数
1.引入内联函数的目的:用他代替c语言中表达式形式的宏定义来解决程序中函数调用的效率问题。 由于宏定义使用预处理器实现,没有参数的压栈,代码生成等一系列操作,因此效率很高,但不能进行参数有效性检测,且分绘制不能进行强制类型转换。inline 函数取代了表达式形式的宏定义,且消除了其缺点,也继承 优点。2.为什么内联函数能很好的取代表达式形式的预定义 inline定义的内联函数,函数代码被放入原创 2015-06-21 12:58:20 · 804 阅读 · 0 评论 -
查找算法
查找:所谓查找就是在数据集合中寻找满足某种条件的数据元素。1. 二分查找1.1 二分查找的定义二分查找也属于顺序表查找范围,二分查找也称为折半查找。二分查找(有序)的时间复杂度为O(LogN)。那么什么是二分查找呢?二分查找的基本思想是, 在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的原创 2015-07-27 17:27:10 · 639 阅读 · 0 评论 -
斐波那契数列及青蛙跳台阶问题
题目1:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契(Fibonacci)数列定义如下: f(n)=⎧⎩⎨⎪⎪0,1,f(n−1)+f(n−2),n=0n=1n>2\begin{equation}f(n)=\left\{ \begin{array}{cc} 0, &n=0\\ 1,原创 2015-07-29 15:51:31 · 2935 阅读 · 1 评论 -
面试题7:用两个栈实现队列和用两个队列实现栈
题目:1.0 用两个栈实现一个队列。队列声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和队列头部删除结点功能。template <typename T> class CQueue{public: CQueue(void); ~CQueue(void); // 在队列末尾添加一个结点 void appendTail(原创 2015-07-23 16:01:06 · 690 阅读 · 0 评论 -
各种排序算法的实现,总结与比较
(一)排序基本概念: 根据排序过程中待排序文件存放的位置不同,可以把排序分为内部和外部排序两大类。在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序;在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序。内部排序适用于记录个数不很多的较小待排序文件的排序;外部排序则适用于记录个数太多不能一次全部放入内存的较大待排序文件的排序。(二)原创 2015-07-23 17:29:36 · 2950 阅读 · 0 评论