C/C++笔试题汇总09

本文汇总了C/C++编程中的常见笔试题,包括static关键字的作用、静态链接与动态链接的区别、内联函数的使用及其优缺点、纯虚函数的意义及实现、vector与list的选择、Qt对象间的通信方式、各种排序算法的优缺点、获取当前时间的方法、中断与异常的差异,以及数组元素个数的宏定义方法。
摘要由CSDN通过智能技术生成

目录

1. static关键字有什么用?

2. 静态链接和动态链接有什么区别?

3. 对于一个频繁使用的短小函数,应该使用什么来实现?有什么优缺点?

4. 纯虚函数有什么作用?如何实现?

5. 什么情况下用vector,什么情况下用list?

6. Qt中的对象间的通信用什么方式?

7. C语言写个排序算法,并且说明其优缺点

8. 取得当前时间的方法有哪些,说明优缺点。

9. 简要描述中断和异常的区别。

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]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值