C++ 面试 (1) 指针】的更多相关文章

面试一:指针与引用的区别? 答案: (1)非空区别.在任何情况下都不能使用指向空值的引用.因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量.相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用.不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针要高. (2)合法性区别.在使用引用之前不需要测试它的合法性.相反,指针则应该总是被测试,防止其为空. (3)可修改…
因为面试时问了我这道题,导致我想去了解信号槽到底是如何实现的,于是贴着顺序看了下源码,大致了解了整个框架.网上关于信号槽的文章也很多,但是大部分都是将如何应用的,这里我就写一下我所理解的如何实现吧, 由于时间仓促,源码阅读的也不甚仔细,难免导致最终理解有偏差或错误,大家看出了请一定指正. 首先:信号槽其实就是三部分组成:信号的声明,槽的声明和实现 以及 connect函数.这其中我觉得最重要的就是这个connect函数了. 1:对于Qt中的每个含有Q_OBJECT的类对象,其内部都有一个类对象数…
说明:所有题目均摘录于网络以及我所见过的面试题目,欢迎补充! 无特殊说明情况下,下面所有题s目都是linux下的32位C程序. 先来几个简单的热热身. 1.计算以下sizeof的值. char str1[] = {'a', 'b', 'c', 'd', 'e'}; char str2[] = "abcde";char *ptr = "abcde";char book[][80]={"计算机应用基础","C语言","C…
指针是C++中一类颇具特色的数据类型,允许直接操作内存地址,实现内存的动态分配.指针问题通常包括指针常量,常量指针,数组指针,指针数组,函数指针,指针传值等. 指针和引用的区别 非空区别.在任何情况下都不能使用指向空值的引用.因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量.相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用.不存在指向空值的引用这个事实意味着使用引用…
在C语言中不可改变的数据(量)就是常量    在C语言中有三种常量        字面量(直接量),就是直接写出来的,从写法上就可以看出值与类型等,例如:19,123.456等        名字常量(宏定义,宏替换),语法:            在代码一开始的位置写上                #define 名字 值            运行原理说明:程序要经过:编码->编译->链接->运行                    在编译的过程中,又分为一开始的预编译     …
[链表] Q:Implement an algorithm to delete a node in the middle of a single linked list, given only access to that node EXAMPLE Input: the node ‘c’ from the linked list a->b->c->d->e Result: nothing is returned, but the new linked list looks like…
原题如下: #include <stdio.h> int main(void) { int i , j ; unsigned int Array_A[32]; unsigned int *pPointer; i = 0x0008 ; //测试i printf("i=%d\n",i) ; pPointer = Array_A ; *(pPointer++)=i++ ; //测试i printf("i=%d\n",i) ; j= Array_A[0]; pr…
上次我们学习了环形链表的数据结构,那么接下来我们来一起看看下面的问题, 判断一个单向链表是否是环形链表? 看到这个问题,有人就提出了进行遍历链表,记住第一元素,当我们遍历后元素再次出现则是说明是环形链表,如果没有这是一个单向非环形链表. 我们来分析下上述的解决方法,我们分析这个程序的时间复杂度则是O(n).  那么是不是最优的选择呢? 我们引入新的解决思路,那就是“快慢指针”. 我们来看看接下来的解决思路,是否比上面的思路有优化的地方. 思路: 当我们在遍历链表的时候,我们设计两个指针,分别是快…
auto_ptr<string> p1(new string ("auto") : //#1 auto_ptr<string> p2; //#2 p2 = p1; //#3 在语句#3中,p2接管string对象的所有权后,p1的所有权将被剥夺.前面说过,这是好事,可防止p1和p2的析构函数试图刪同—个对象: 但如果程序随后试图使用p1,这将是件坏事,因为p1不再指向有效的数据. 下面来看使用unique_ptr的情况: unique_ptr<string…
1.综述 shared_ptr 是一个标准的共享所有权的智能指针, 允许多个指针指向同一个对象. 定义在 memory 文件中(非memory.h), 命名空间为 std. shared_ptr 是为了解决 auto_ptr 在对象所有权上的局限性(auto_ptr 是独占的), 在使用引用计数的机制上提供了可以共享所有权的智能指针, 当然这需要额外的开销: (1) shared_ptr 对象除了包括一个所拥有对象的指针外, 还必须包括一个引用计数代理对象的指针. (2) 时间上的开销主要在初始…