目录
3. 对于一个频繁使用的短小函数,应该使用什么来实现?有什么优缺点?
10. 已知一个数组ARRAY,定义一个宏(NA),求出数组的元素个数
1. static关键字有什么用?
(1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
(2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
(3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
2. 静态链接和动态链接有什么区别?
静态链接和动态链接两者最大的区别就在于链接的时机不一样,静态链接是在形成可执行程序前,而动态链接的进行则是在程序执行时
3. 对于一个频繁使用的短小函数,应该使用什么来实现?有什么优缺点?
(1) 应该使用内联函数inline来实现,即编译器将inline内联函数内的代码替换到函数被调用的地方。一般来说,内联机制用于优化规模较小、流程直接、频繁调用的函数。
优点:
1) 在内联函数被调用的地方进行代码展开,省去函数调用的时间,从而提高效率;
2) 相比于宏函数,内联函数在代码展开时,编译器会进行语法检查或数据类型换,使用更加安全;
缺点:
1) 代码膨胀,产生更多的开销;
2) 如果内联函数内代码块的执行时间比调用时间(代码的调用会其实包含着一系列工作)长的多,那么效率的提升并没有那么大;
3) 如果修改内联函数,那么所有调用该函数的代码文件都需要重新编译;
4) 内联声明只是建议,是否内联由编译器来决定,编译器实际上是可以选择忽略这个请求的。
4. 纯虚函数有什么作用?如何实现?
(1) 纯虚函数是为了实现一个接口,规范继承这个类的子类必须实现这个函数。在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。
(2) 在虚函数声明的结尾加 ‘=0’,并且不定义函数体。
5. 什么情况下用vector,什么情况下用list?
当需要高效存储并且需要支持随机访问,不关心插入删除效率时,使用vector
当需要大量插入删除操作,并且不关心随机访问的速度时,使用list
6. Qt中的对象间的通信用什么方式?
信号与槽
7. C语言写个排序算法,并且说明其优缺点
1)插入排序:优点:稳定、快;缺点:比较次数不一定次数越少插入点数据移动越多
2)希尔算法:优点:快、数据移动少;缺点:不稳定
3)简单选择排序:优点:数据移动次数已知为(n-1)次;缺点:比较次数多
4)冒泡排序:优点:稳定;缺点:慢,每次只能移动相邻的两个数据
8. 取得当前时间的方法有哪些,说明优缺点。
1)使用time()函数; 可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算。
2)使用localtime()函数; 将时间数值变换成本地时间,考虑到本地时区和夏令时标志;
9. 简要描述中断和异常的区别。
中断由外因引起,异常由CPU本身原因引起
10. 已知一个数组ARRAY,定义一个宏(NA),求出数组的元素个数
#define NA(ARRAY) (sizeof(ARRAY))/(sizeof(ARRAY[0]))