C++&C语言面试题&八股文&笔试题
点击下方链接获取全部内容文档及其答案:
C++&C语言面试题&八股文&笔试题&汇总文档 涵盖1000多道题文档及其答案下载
https://m.tb.cn/h.5SLg75u?tk=kWeFWcNmRMf CZ0001
. 变量
2. 的声明和定义有什么区别
3. 写出 bool 、int、 float、指针变量与“零值”比较的 if 语句
4. sizeof 和 strlen 的区别
4.C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
5. C中的 malloc 和C++中的 new 有什么区别
6. 写一个“标准”宏 MIN
7. 一个指针可以是 volatile 吗
8. a 和&a 有什么区别
9. 简述 C、C++程序编译的内存分配情况
10. 简述 strcpy、sprintf 与 memcpy 的区别
12. 面向对象的三大特征
13. C++的空类有哪些成员函数
14. 谈谈你对拷贝构造函数和赋值运算符的认识
15. 用 C++设计一个不能被继承的类
16. 访问基类的私有虚函数
17. 简述类成员函数的重写、重载和隐藏的区别
18. 简述多态实现的原理
19. 链表和数组有什么区别
20. 怎样把一个单链表反序
21. 简述队列和栈的异同
22. 能否用两个栈实现一个队列的功能
23. 计算一颗二叉树的深度
24. 编码实现直接插入排序
25. 编码实现冒泡排序
26. 编码实现直接选择排序
27. 编程实现堆排序
28. 编程实现基数排序
29. 谈谈你对编程规范的理解或认识
30. short i = 0; i = i + 1L;这两句有错吗
31. &&和&、||和|有什么区别
32. C++的引用和 C 语言的指针有什么区别
33. 在二元树中找出和为某一值的所有路径
34. 写一个“标准”宏 MIN
35. typedef 和 define 有什么区别
36. 关键字 const 是什么
37. static 有什么作用
38. extern 有什么作用
39. 流操作符重载为什么返回引用
40. 简述指针常量与常量指针区别
41. 数组名和指针的区别
42. 如何避免“野指针”
43. 常引用有什么作用
44. 编码实现字符串转化为数字
45. 简述 strcpy、sprintf 与 memcpy 的区别
46. 用 C 编写一个死循环程序
47. 编码实现某一变量某位清 0 或置 1
48. 评论下面这个中断函数
49. 构造函数能否为虚函数
50. 谈谈你对面向对象的认识
51. const、static作用。
53. 虚析构的必要性,引出内存泄漏,虚函数和普通成员函数的储存位置,虚函数表、虚函数表指针
55. stl熟悉吗,vector、map、list、hashMap,vector 底层,map引出红黑树。优先队列用过吗,使用的场景。无锁队列听说过吗,原理是什么(比较并交换)
57. 四种cast,智能指针58.tcp和udp区别
60. 指针和引用作用以及区别
62. boost用过哪些类,thread、asio、signal、bind、function
64. QT信号槽实现机制,QT内存管理,MFC消息机制
66. 多线程,锁和信号量,互斥和同步
68. 提高c++性能,你用过哪些方式去提升
69. 编译原理,尝试自己写过语言或语言编译器
71. 对多种计算机语言熟悉
73. 针对网络框架(DPDK)、逆向工程(汇编)、分布式集群(docker、k8s、redis等)、CPU计算(nvidia cuda)、图像识别(opencv、opengl、tensorflow等)、AI等有研究
74. 引用和指针的区别?
75. 从汇编层去解释一下引用
76. C++中的指针参数传递和引用参数传递
77. 形参与实参的区别?
78. static的用法和作用?
79.静态变量什么时候初始化
80.const?
81. const成员函数的理解和应用?
82. 指针和const的用法
83.mutable
84. extern用法?
85. int转字符串字符串转int? strcat,strcpy,strncpy,memset,memcpy的内部实现?
86. 深拷贝与浅拷贝?
87. C++模板是什么,底层怎么实现的?
88. C语言struct和C++struct区别
89. 虚函数可以声明为inline吗?
90. 类成员初始化方式?构造函数的执行顺序 ?为什么用成员初始化列表会快一些?
91. 成员列表初始化?
92. 构造函数为什么不能为虚函数?析构函数为什么要虚函数?
93. 析构函数的作用,如何起作用?
94. 构造函数和析构函数可以调用虚函数吗,为什么?
95. 构造函数的执行顺序?析构函数的执行顺序?构造函数内部干了啥?拷贝构造干了啥?
96. 虚析构函数的作用,父类的析构函数是否要设置为虚函数?
97. 构造函数析构函数可否抛出异常
98. 类如何实现只能静态分配和只能动态分配
99. 如果想将某个类用作基类,为什么该类必须定义而非声明?
100. 什么情况会自动生成默认构造函数?
101. 什么是类的继承?
102. 什么是组合?
103. 抽象基类为什么不能创建对象?
104. 类什么时候会析构?
105. 为什么友元函数必须在类内部声明?
106. 介绍一下C++里面的多态?
107. 用C语言实现C++的继承
108. 继承机制中对象之间如何转换?指针和引用之间如何转换?
109. 组合与继承优缺点?
110. 左值右值
111. 移动构造函数
112. C语言的编译链接过程?
113. vector与list的区别与应用?怎么找某vector或者list
114. STL vector的实现,删除其中的元素,迭代器如何变化?为什么是两倍扩容?释放空间?
115. 容器内部删除一个元素
116. STL迭代器如何实现
117.set与hash_set的区别
118.hashmap与map的区别
119. map、set是怎么实现的,红黑树是怎么能够同时实现这两种容器? 为什么使用红黑树?
120. 如何在共享内存上使用stl标准库?
121. map插入方式有几种?
122. STL中unordered_map(hash_map)和map的区别, hash_map如何解决冲突以及扩容
123. vector越界访问下标,map越界访问下标?vector删除元素时会不会释放空间?
124. map[]与find的区别?
125. STL中list与queue之间的区别
126. STL中的allocator,deallocator
127. STL中hash_map扩容发生什么?
128. map如何创建?
129. vector的增加删除都是怎么做的?为什么是1.5倍?
130. 函数指针?
131. 说说你对c和c++的看法,c和c++的区别?
5) C++中有引用,而C没有;这样就不得不提一下引用和指针的区别(文后扩展2);
132. c/c++的内存分配,详细说一下栈、堆、静态存储区?
133. 堆与栈的区别?
134. 野指针是什么?如何检测内存泄漏?
135. 悬空指针和野指针有什么区别?
136. 内存泄漏
定位代码位置
137. new和malloc的区别?
138. delete p;与delete[]p,allocator
139. new和delete的实现原理, delete是如何知道释放内存的大小的额?
140. malloc申请的存储空间能用delete释放吗
141. malloc与free的实现原理?
142. malloc、realloc、calloc的区别
143. stdcall和cdecl的区别?
144. 使用智能指针管理内存资源,RAII
145. 手写实现智能指针类
146. 内存对齐?位域?
147. 结构体变量比较是否相等
148. 位运算
149. 为什么内存对齐
150. 函数调用过程栈的变化,返回值和参数变量哪个先入栈?
151. 怎样判断两个浮点数是否相等?
152. 宏定义一个取两个数中较大值的功能
153. define、const、typedef、inline使用方法?
154. printf实现原理?
155. #include 的顺序以及尖叫括号和双引号的区别
156. lambda函数
157. hello world 程序开始到打印到屏幕上的全过程?
158. 模板类和模板函数的区别是什么?
159. 为什么模板类一般都是放在一个h文件中
160. C++中类成员的访问权限和继承权限问题。
161. cout和printf有什么区别?
162. 重载运算符?
3、两种重载方式,成员运算符和非成员运算符,成员运算符比非成员运算符少一个参数;下标运算符、 箭头运算符必须是成员运算符;
5、当重载的运算符是成员函数时,this绑定到左侧运算符对象。成员运算符函数的参数数量比运算符对 象的数量少一个;至少含有一个类类型的参数;
163. 函数重载函数匹配原则
164. 定义和声明的区别
165. C++类型转换有四种
166. 全局变量和static变量的区别
167. 静态成员与普通成员的区别
168. 说一下理解 ifdef endif
169. 隐式转换,如何消除隐式转换?
170. 虚函数的内存结构,那菱形继承的虚函数内存结构呢
172. 迭代器++it,it++哪个好,为什么
173. 模板和实现可不可以不写在一个文件里面?为什么?
174. 在成员函数中调用delete this会出现什么问题?对象还可以使用吗?
175. 智能指针的作用;
176. auto_ptr作用
177. class、union、struct的区别
178. 动态联编与静态联编
179. 动态编译与静态编译
180. 动态链接和静态链接区别
181. 在不使用额外空间的情况下,交换两个数?
182. strcpy和memcpy的区别
183. 执行int main(int argc, char *argv[])时的内存结构
184. volatile关键字的作用?
185. 讲讲大端小端,如何检测(三种方法)
186. 查看内存的方法
187. 空类会默认添加哪些东西?怎么写?
188. 标准库是什么?
189. new、delete、operator new、operator delete、placement new、placement delete
190. 为什么拷贝构造函数必须传引用不能传值?
191. 空类的大小是多少?为什么?
192. 你什么情况用指针当参数,什么时候用引用,为什么?
193. 大内存申请时候选用哪种?C++变量存在哪?变量的大小存在哪?符号表存在哪?
194. 为什么会有大端小端,htol这一类函数的作用
195. 静态函数能定义为虚函数吗?常函数?
196. this指针调用成员变量时,堆栈会发生什么变化?
197. 静态绑定和动态绑定的介绍
198. 设计一个类计算子类的个数
199.怎么快速定位错误出现的地方
200. 虚函数的代价?
201. 类对象的大小
202. 移动构造函数
203. 何时需要合成构造函数
204. 何时需要合成复制构造函数
205. 何时需要成员初始化列表?过程是什么?
206. 程序员定义的析构函数被扩展的过程?
207. 构造函数的执行算法?
208. 构造函数的扩展过程?
209. 哪些函数不能是虚函数
210. sizeof 和strlen 的区别
211. 简述strcpy、sprintf与memcpy的区别
212. 编码实现某一变量某位清0或置1
214. 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。
215. 局部变量全局变量的问题?
216. 数组和指针的区别?
217. C++如何阻止一个类被实例化?一般在什么时候将构造函数声明为private?
218. 如何禁止自动生成拷贝构造函数?
219. assert与NDEBUGE
220. Denug和release的区别
221. main函数有没有返回值
222. 写一个比较大小的模板函数
224. 虚函数与纯虚函数的区别在于
225. 智能指针怎么用?智能指针出现循环引用怎么解决?
226. strcpy函数和strncpy函数的区别?哪个函数更安全?
227. 为什么要用static_cast转换而不用c语言中的转换?
228. 成员函数里memset(this,0,sizeof(*this))会发生什么
229. 方法调用的原理(栈,汇编)
230. MFC消息处理如何封装的?
232. 随机数的生成
233. 变量的声明和定义有什么区别?
234. 请简述#ifdef、#else、#endif、和#ifndef的作用
235. 请写出int、bool、float、指针变量与"零值"比较的if
236. 结构体是否可以直接赋值?
237. sizeof和strlen的区别?
238. C语言和C++语言中的关键字static有什么区别?
239. C语言的malloc和C++中的new有什么区别?
240. 请写一个标准宏MIN?
242. 关键字volatile有什么作用?
243. 一个参数可以既是const又是volatile吗?
244. *a和&a有什么区别?
245. 用C语言编写一个死循环程序?
246. 结构体内存对齐问题?
247. 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
248. 请简述C/C++程序编译的内存分配情况?
249. 请简述strcpy、sprintf和memcpy的区别?
251. C语言的指针和引用和C++的有什么区别?
252. typedef和define有什么区别?
253. 指针常量和常量指针有什么区别?
254. 请简述队列和栈的异同?
255. 如何设置地址为0x67a9的整型变量的值为0xaa66?
256. 请编程实现字符串转换为数字?
257. C语言的结构体和C++的有什么区别?
258. 简述指针常量与常量指针的区别?
259. 如何避免"野指针"?
260. 句柄和指针的区别和联系是什么?
261. new/delete与malloc/free的区别是什么?
262. 请说一说extern “C”?
263. 请说一说C++中struct和class的区别是什么?
264. new、delete、malloc、free关系
265. delete与 delete []区别
266. C++有哪些性质(面向对象特点)
267. 子类析构时要调用父类的析构函数吗?
268. 多态,虚函数,纯虚函数
269. 求下面函数的返回值(微软)
270. 什么是“引用”?申明和使用“引用”要注意哪些问题?
271. 将“引用”作为函数参数有哪些特点?
272. 在什么时候需要使用“常引用”?
273. 结构与联合有和区别?
274. 试写出程序结果:
275. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?
276. 有哪几种情况只能用intialization list 而不能用
277. C++是不是类型安全的?
278. main 函数执行以前,还会执行什么代码?
279. 描述内存分配方式以及它们的区别?
280. 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。
281. 请说出const与#define 相比,有何优点?
282. 简述数组与指针的区别?
283. int (s[10])(int) 表示的是什么?
284. 栈内存与文字常量区
285. 将程序跳转到指定内存地址
286. int id[sizeof(unsigned long)];这个对吗?为什么?
287. 引用与指针有什么区别?
288. const 与 #define 的比较 ,const有什么优点?
289. 内存的分配方式有几种?
290. 基类的析构函数不是虚函数,会带来什么问题?
291. 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
292. const关键字(反义词mutable)
293. static关键字
294. extern关键字
295. 指针和引用的区别
296. explicit是干什么用的 ?
297. inline的用法
298. new/delete与malloc/free之间的区别?
299. 浅拷贝与深拷贝?为什么要使用深拷贝?
300. 深入谈谈堆和栈?
301. 内存的静态分配和动态分配的区别?
302. 实现string类
304. 什么是静态关联?什么是动态关联?
305. 虚函数是如何实现的?
306. 虚函数与纯虚函数的区别?含有纯虚函数的类叫什么?
307. 多重继承如何解决?
308. 派生类与虚函数概述
309. 为什么析构函数要定义为虚函数?哪些函数不能是虚函数?
310. 析构函数可以抛出异常吗?为什么不能抛出异常?除了资源泄露,还有其他需考虑的因素吗?
311. 动态链接库的两种使用方法及特点?
312. STL各类容器(3个顺序+4个关联+1个无序关联)的实现原理及使用情形
313. 什么是STL?
314. 什么是智能指针?底层实现?
315. 多进程与多线程之间的区别?(最好要了解透彻)
316. 什么是进程池和线程池?
317. 进程间的通信方式有哪些?如何实现的?
318. 简述inux中的同步与异步机制?
319. 简述阻塞与非阻塞?
320. 简述Linux中的5种I/O模式?
321. 什么是死锁?四个死锁的条件?避免死锁的方法?
322. Linux的任务调度机制是什么?
323. 标准库函数与系统调用的区别?
324. 分别简述三次握手与四次挥手的过程?
325. tcp和udp之间的区别?
326. select、poll、epoll之间的区别?
327. epoll有哪些触发模式?
328. 若是有大规模的数据连接,并发模型如何设计?
329. C和C++的区别
330. C++中指针和引用的区别
331. 结构体struct和共同体union(联合)的区别
332. #define和const的区别
333. 重载overload,覆盖(重写)override,隐藏(重定义)overwrite,这三者之间的区别
334. new、delete、malloc、free之间的关系
335. delete和delete[]的区别
336. 虚函数、纯虚函数
337. STL库用过吗?常见的STL容器有哪些?算法用过几个?
338. const知道吗?解释一下其作用
339. 虚函数是怎么实现的
340. 堆和栈的区别
341. 关键字static的作用
342. STL中map和set的原理(关联式容器)
343. #include<file.h> #include “file.h” 的区别
344. 什么是内存泄漏?面对内存泄漏和指针越界,你有哪些方法?
345. 定义和声明的区别
346. C++文件编译与执行的四个阶段
347. STL中unordered_map和map的区别
348. C++的内存管理
349. 构造函数为什么一般不定义为虚函数?而析构函数一般写成虚函数的原因 ?
350. 静态绑定和动态绑定的介绍
351. 引用是否能实现动态绑定,为什么引用可以实现
352. 深拷贝和浅拷贝的区别
353. 什么情况下会调用拷贝构造函数(三种情况)
354. C++的四种强制转换
355. 调试程序的方法
356. extern“C”作用
357. typdef和define区别
358. 引用作为函数参数以及返回值的好处
359. 纯虚函数
360. 什么是野指针
361. 线程安全和线程不安全
362. C++中内存泄漏的几种情况
363. 栈溢出的原因以及解决方法
364. C++标准库vector以及迭代器
365. C++中vector和list的区别
366. C++中的基本数据类型及派生类型
367. 友元函数和友元类
368. c++函数库中一些实用的函数
369. 线程的基本概念、线程的基本状态及状态之间的关系?
370. 线程与进程的区别?
371. C++多线程有几种实现方法,都是什么?
372. 数据类型说明
374. 封装、继承、多态
375. 虚函数的作用及其实现原理
376. 深拷贝和浅拷贝(值拷贝和位拷贝)
377. 虚函数、纯虚函数怎么实现
378. 为什么要有纯虚函数
379. 纯虚函数
380. 为什么要有虚析构函数
381. 构造函数能不能是虚函数
382. C++里面构造函数能有返回值吗?
383. 构造函数和析构函数能被继承吗?
384. C++中Overload、Overwrite及Override的区别
385. 一个空的class类里有什么
386. C++中一个空类的大小为什么是1?
387. 一个结构体中有一个int,一个char,一个static int,问这个结构体占多少内存?(涉及到内存对齐机制)
388. 结构体与联合体的区别
389. 函数与宏的差别
390. 宏函数和inline函数的异同点
391. define 和 typedef 区别
392. 标准C++中的include “” 与<>的区别
393. C++的内存管理机制
394. C语言中的malloc/free和C++中的new/delete的区别和联系
395. 迭代和递归区别
396. 不可操作的操作符
397. C++关键字mutable作用
398. 引用与指针有什么区别?
399. 什么是黑盒测试和白盒测试?
400. 你知道的类模版有哪些
401. new可以搭配free吗,为什么?
402. 怎么查看内存泄漏
403. 什么是内存溢出
404. 内存溢出的解决方案
405. 函数指针与指针函数分别是什么
406. C++11新特性了解吗
407. 接口和抽象类的区别
408. 预编译在做些什么事情?
409. 可执行文件编译过程
411. 堆和栈的区别,以及为什么栈效率高
412. 函数参数压栈方式为什么是从右到左的?
413. C++中的智能指针
414. 基类里private成员函数可以声明为虚函数吗?
415. 函数A调用函数B的时候,有什么需要压栈?
416. 数组和指针区别?数组和链表呢?双向链表和单向链表?
417. vector底层实现?
418. vector与list的区别?
419. 变量的声明和定义有什么区别?
420. 简述#ifdef、#else、#endif和#ifndef的作用
421. 写出int、bool、float、指针变量与“零值”比较的if语 句
423. sizeof和strlen的区别
424. c语言的关键字static和c++关键字static有什么区别?
425. c语言的malloc和c++中的new有什么区别?
426. 写一个”标准“宏MIN
427. ++i和i++的区别
428. volatile有什么作用
429. 一个参数可以既是const又是volatile吗
430. a和&a有什么区别?
431. 用c编写一个死循环程序
432. 结构体内存对齐的问题
433. 全局变量和局部变量有什么区别?是怎么是实现的?操作系统和编译器是怎么知道的?
434. 简述c、c++程序编译的内存分配情况
435. 简述strcpy、sprintf、memcpy的区别
436.解析((void()())0)()的含义
437. c语言的指针和引用和c++的有什么区别?
438. new与malloc的区别
439. malloc/free 为什么还要 new/delete?
440. delete与 delete []区别
441. 在物理内存为1G的计算机中能否malloc(1.2G)?
442. 用C写个程序,如何判断一个操作系统是16位还是32位的?
443. 解释下位域,为什么要用位域,位域的好处?
444. 位操作
445. 在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
447. 什么是右值引用,跟左值又有什么区别
448. 判断x=x+1,x+=1,x++哪个效率最高?为什么?
449. 用变量a定义
450. C语言是强类型的语言,这是什么意思?
451. char 与 int之间的转换
452. float(单精度浮点型)和double(双精度浮点型)
453. 字符常量
454. 写出bool 、int、 指针变量与“零值”比较的if语句
455. 写出float x 与“零值”比较的if语句。
457. 输出数据问题
458. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环
460. 变量的声明和定义有什么区别
461. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
462. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个
463. sizeof和strlen的区别
464. c语言中的static和C++中static的区别
465. C++函数中值的传递方式有哪几种?
466. C++里面是不是所有的动作都是main()引起的?如果不是,请举例。
467. 谈谈对面向对象的认识
468. 谈谈你对编程规范的理解
469. 面向对象的三大特性
470. 简述多态的原理
471. 多态的作用?
472. 多态,虚函数,纯虚函数
473. 重载(overload)、重写(override,有的书也叫做“覆盖”)、重定义(redefinition)的区别?
475. 用C++设计一个不能继承的类
477. 在C中用const 能定义真正意义上的常量吗?C++中的
478. 宏和内联(inline)函数的比较?
479. typedef和define由什么区别
480. strcat、strncat、strcpy哪些函数会导致内存溢出? 如何改进?
481. 简述队列和栈的异同
482. 堆和栈的区别?
483. 堆和自由存储区的区别?
484. 什么是内存泄漏?面对内存泄漏有什么避免方法
485. 链表和数组的区别
486. 结构与联合有和区别
487. 什么是“引用”?申明和使用“引用”要注意哪些问题?
488. 将“引用”作为函数参数有哪些特点?
489. STL标准模板库
vector单端数组,当现有的内存空间不够装下数据时,首先配置一块新的空间,然后将旧空间的数据搬 往新空间,再释放原来的空间。
490. 陷阱题
491. 一个C++源文件从文本到可执行文件经历的过程
492. #include 的顺序以及尖叫括号和双引号的区别
493. 进程和线程,为什么要有线程
494. C++11有哪些新特性
495. malloc的原理,brk系统调用干什么的,mmap呢
496. C++的内存管理方式,STL的allocator,最新版本默认使用的分配器
497. hash表的实现,包括STL中的哈希桶长度常数。
498. hash表如何rehash,怎么处理其中保存的资源
499. Redis的rehash怎么做的,为什么要渐进rehash,渐进rehash怎么实现的
500. Redis的定时机制怎么实现的,有哪些弊端,你将如何改进这个弊端
501. Redis是单线程的,为什么这么高效
502. Redis的数据类型有哪些,底层怎么实现
503. Redis和memcached的区别
504. TCP的模型,状态转移
505. 用过哪些设计模式,单例模式,观察者模式的多线程安全问题
506. 用过多线程吗,以前的多线程代码还能怎么优化,线程池的实现
507. epoll怎么实现的,reactor模型组成
508. 线程间的同步方式,最好说出具体的系统调用
509. 哈希表的桶个数为什么是质数,合数有何不妥?
510. C/C++内存有哪几种类型?
511. 堆和栈的区别?
512. 堆和自由存储区的区别?
513. 程序编译的过程?
514. 计算机内部如何存储负数和浮点数?
515. 函数调用的过程?
516. 左值和右值
517. 什么是内存泄漏?面对内存泄漏和指针越界,你有哪些方法?你通常采用哪些方法来避免和减少这类错误?
518. C++11 中有哪些智能指针?shared_ptr 的引用计数是如何实现的?unique_ptr 的unique 是如何实现的? make_shared 和 make_unique 的作用?智能指针使用注意事项?
519. C和C++的区别?
520. int fun() 和 int fun(void)的区别?
521. const 有什么用途
522. 在C中用const 能定义真正意义上的常量吗?C++中的
523. 宏和内联(inline)函数的比较?
524. C++中有了malloc / free , 为什么还需要 new / delete?
525. C和C++中的强制类型转换?
526. static 有什么用途
527. 类的静态成员变量和静态成员函数各有哪些特性?
528. 在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”?
529. 头文件中的 ifndef/define/endif 是干什么用的? 该用法和 program once 的区别?
530. 当i是一个整数的时候++i和i++那个更快一点?i++和
531. 指针和引用的区别?
532. 引用占用内存空间吗?
533. 三目运算符
534. 指针数组和数组指针的区别
535. 左值引用与右值引用
536. 右值引用的意义
537. 什么是面向对象(OOP)?面向对象的意义?
538. 解释下封装、继承和多态?
539. 什么时候生成默认构造函数(无参构造函数)?什么时候生成默认拷贝构造函数?什么是深拷贝?什么是浅拷贝? 默认拷贝构造函数是哪种拷贝?什么时候用深拷贝?
540. 构造函数和析构函数的执行顺序?
541. 虚析构函数的作用?
542. 细看拷贝构造函数
543. C++的编译环境
544. Most vexing parse
545. STL 六大组件
546. stack 中有 pop() 和 top() 方法,为什么不直接用
547. map 和 unordered_map 的区别?各自的优缺点?
548. 如何初始化一个指针数组
549.关键字const是什么含意?
550.什么是动态特性?
551. 基类的有1个虚函数,子类还需要申明为virtual吗?为什么。
552. 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
553. 如何定义Bool变量的TRUE和FALSE的值。
554. 内联函数INline和宏定义一起使用的区别。
555. 编写my_strcpy函数,实现与库函数strcpy类似的功 能,不能使用任何库函数;
556. 完成程序,实现对数组的降序排序
558. C中static有什么作用
559. 请问运行Test函数会有什么样的结果?
560. C++特点是什么,如何实现多态?画出基类和子类在内存中的相互关系。
561. C++中的什么是多态性? 是如何实现的?
562. 关键字static的作用是什么?
563. #define MAX_LEN 500 char arry[MAX_LEN]; cin>>arry; 这段代码有问题吗?若有,请指出并修改;
564. delete []arry 和 delete arry 一样吗?不一样请说明;
565. 多态的作用?
566. C语言的volatile的含义是什么。使用时会对编译器有什么暗示。
567. 请简述以下两个for循环的优缺点
568. 预处理器标识#error的目的是什么?
569. C语言的volatile的含义是什么。使用时会对编译器有什么暗示。
570. MFC中CString是类型安全类么?
571. 内联函数INline和宏定义一起使用的区别。
572. C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中?
573. DB事务处理的四个特性:
574. 如何初始化一个指针数组。
575.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?
576. 如何在C中初始化一个字符数组。
577. 参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么
578. 请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。
579. C++特点是什么,如何实现多态?画出基类和子类在内存中的相互关系。
580. 什么是“引用”?申明和使用“引用”要注意哪些问题?
581. 触发器怎么工作的?
582. C也可以通过精心封装某些函数功能实现重用,那C++的类有什么优点吗,难道仅仅是为实现重用。
583. CSingleLock是干什么的。
584. C++中引用和指针的区别?
585. C与C++各自是如何定义常量的?有什么不同?
586. C++函数中值的传递方式有哪几种?
587. 一般数据库若出现日志满了,会出现什么情况,是否还能使用?
588. C++里面如何声明constvoidf(void)函数为C程序中的库函数?
589. c++中类和c语言中struct的区别(至少两点)
590. IP组播有那些好处?
591. 变量的声明和定义有什么区别?
592. 程序什么时候应该使用线程,什么时候单线程效率高。
593. 介绍一下模板和容器。如何实现?(也许会让你当场举例实现)
594. 以下为WindowsNT下的32位C++程序,请计算sizeof
595. C语言同意一些令人震惊的结构,下面的结构是合法的 吗,如果是它做些什么?inta=5,b=7,c;c=a+++b;
596. #include与#include“file.h”的区别?
597. 如何在C中初始化一个字符数组。
598. 在C++程序中调用被C编译器编译后的函数,为什么要 加extern“C”?
599. 内存的分配方式的分配方式有几种?
600. 在C++程序中调用被C编译器编译后的函数,为什么要 加extern"C"?
601. 如何让局部变量具有全局生命期。
602. 解释堆和栈的区别。
603. 在C++程序中调用被C编译器编译后的函数,为什么要 加extern“C”声明?
604. strtok函数在使用上要注意什么问题。
605. 用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
606. 说一说C与C++的内存分配方式?
607. 你如何理解MVC。简单举例来说明其应用。
608. 在C++程序中调用被C编译器编译后的函数,为什么要 加extern“C”声明?
609.inti=(j=4,k=8,l=16,m=32);printf(“%d”,i);输出是多少?
610. #include与#include“file.h”的区别?
611. 既然C++中有更好的const为什么还要使用宏?
612. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?
613. C++和C定义结构的分别是什么。
614. #include和#include"a.h"有什么区别?
615. #include和#include“filename.h”有什么区别?
616. C函数可否单独编译?
617. 请简述以下两个for循环的优缺点
618. 完成程序,实现对数组的降序排序
620. 结合1个你认为比较能体现OOP思想的项目,用UML来描述。
621. C与C++各自是如何定义常量的?有什么不同?
622. 头文件中的ifndef/define/endif干什么用?
623. C++中为什么用模板类。
624. 动态连接库的两种方式?
625. 在什么时候需要使用“常引用”?
626. 预处理器标识#error的目的是什么?
627. GCC3.2.2版本中支持哪几种编程语言。
628. 已知strcpy的函数原型: charstrcpy(charstrDest,constcharstrSrc)其中 strDest是目的字符串,strSrc是源字符串。不调用C++/C 的字符串库函数,请编写函数strcpy。
629. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?
630. 多重继承如何消除向上继承的二义性。
631. #include与#include“file.h”的区别?
632. 对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现?
633. #include<filename.h>和#include“filename.h”有什么区别?
634. 预处理器标识#error的目的是什么?
635. 头文件的作用是什么?
636. 请问运行Test函数会有什么样的结果?
637. delete[]arry和deletearry一样吗?不一样请说明;
638. 请问运行Test函数会有什么样的结果?
639. 请简述以下两个for循环的优缺点
640. 构造函数可否是虚汗数,为什么?析构函数呢,可否是纯虚的呢?
641. 在C++程序中调用被C编译器编译后的函数,为什么要加extern"C"?
642. 请写出下面代码在32位平台上的运行结果,并说明sizeof的性质:
643. 高级通信包括信号量,——-,——–
644. 关联、聚合(Aggregation)以及组合(Composition)的区别?
645. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?
646. 请问运行Test函数会有什么样的结果?
647. 多态的实现
648. Cpp四种强制类型转换
649. 类的static成员的特点
650. 指针和引用的区别
651. 谈谈对Cpp内存的理解
652. 谈谈new、delete、malloc、free
653.const关键字
654.知道STL吗,挑两个你最常用的容器说一说
655.怎么确定一个程序是C编译的还是C++编译的
656.一个文件从源码到可执行文件所经历的过程
657.了解C++新特性吗
658. 什么是纯虚函数
659. 构造函数和析构函数可以为虚函数吗
660. 栈和堆的区别,什么时候必须使用堆
661. 用宏定义实现swap
662. 头文件<>和""的区别
663. 编写string的构造函数、拷贝构造函数、赋值操作符重载和析构函数
665. 死锁产生的原因和死锁的条件
666. 如何采用单线程处理高并发
667. 线程的状态
668. 进程的状态
669. 系统调用brk和mmap
670. 说说三种内存管理机制
671. 大端和小端,用C++代码怎么确定
672. TCP和UDP的区别
673.TCP三次握手
674.三次握手的原因
675.TCP四次挥手
676.四次挥手的原因
677.TIME_WAIT
678. Http协议
679. 几种常见的排序算法
680. 链表的一些性质和操作
681. 常见的查找算法
682. 动态规划
683. 关键字 static 的作用是什么?
684. “引用”与指针的区别是什么?
685…h 头文件中的 ifndef/define/endif 的作用?
686. #include 与 #include “file.h”的区别?
687. 描述实时系统的基本特性
688. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
689. 什么是平衡二叉树?
690. 堆栈溢出一般是由什么原因导致的?
691. 冒泡排序算法的时间复杂度是什么?
692. 什么函数不能声明为虚函数?
693. 队列和栈有什么区别?
694. 不能做 switch()的参数类型
695. 局部变量能否和全局变量重名?
696. 如何引用一个已经定义过的全局变量?
697. 全局变量可不可以定义在可被多个.C 文件包含的头文件中?为什么?
698. 语句 for( ;1 ;)有什么问题?它是什么意思?
699. do……while 和 while……do 有什么区别?
700. statac 全局变量、局部变量、函数与普通全局变量、局部变量、函数 static 全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别? static 函数与普通函数有什么区别?
701. 程序的内存分配
702. 解释堆和栈的区别
703. 什么是预编译,何时需要预编译?
704. 关键字 const 是什么含意?
705. 关键字 volatile 有什么含意 并给出三个不同的例子。
706. 三种基本的数据模型
707. 结构与联合有和区别?
708. 描述内存分配方式以及它们的区别?
709. 请说出 const 与#define 相比,有何优点?
710. 简述数组与指针的区别?
711. 分别写出 BOOL,int,float,指针类型的变量 a 与“零”的比较语句。
713. 用两个栈实现一个队列的功能?要求给出算法和思路!
714. 嵌入式系统中经常要用到无限循环,你怎么样用 C 编写死循环呢?
715. 位操作(Bit manipulation)
716. 访问固定的内存位置(Accessing fixed memory locations)
717. 中断(Interrupts)
718. 动态内存分配(Dynamic memory allocation)
719. Typedef
720. 用变量 a 给出下面的定义
721. 写一个“标准”宏
722.A.c 和 B.c 两个 c 文件中使用了两个相同名字的 static 变量,编译的时候会不会有问题? 这两个 static 变量会保存到哪里(栈还是堆或者其他的)?
723. 一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指 向的节点?
724. 比较字符串,输出它们第一个不同字母的位置,大小写不敏感
726. 比较两字符串长短,并返回结果。
728. 是比较两个英文字符串的不相同的字符的位置(忽略字母大小写)
730. 输入一个整数n,计算不大于n的数中和7相关的数的个数,包括能被7整出的数和含有字符7的数。
732. 输入一串数,将其最小的放在第一位,次小的放在最后一位,再小的放在第二位,再再小的放在倒数第二位,以此类推。
734. 对姓氏进行排名
736. 一组2n+1个元素的正整形数组,按升序排序,然后将小于中间数值的成员替换为中间的值。
737. 输入一个四位的十进制整数,编程实现将这四位整数转化为十六进制的字符串,并输出十六进制的字符串(注意负数的处理)
738. 介绍一下STL,详细说明STL如何实现vector。
739. 如果用VC开发程序,常见这么几个错误, C2001,c2005,c2011,这些错误的原因是什么。
740. 继承和委派有什么分别,在决定使用继承或者委派的时候需要考虑什么。
741. 指针和引用有什么分别;如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗?
742. 参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么;
743. 结合一个项目说明你怎样应用设计模式的理念。
744. 介绍一下你对设计模式的理解。(这个过程中有很多很细节的问题随机问的)
745. C++和C定义结构的分别是什么。
746. 构造函数可否是虚汗数,为什么?析构函数呢,可否是纯虚的呢?
747. 拷贝构造函数相关问题,深拷贝,浅拷贝,临时对象等。
748. 结合1个你认为比较能体现OOP思想的项目,用UML来描述。
749. 基类的有1个虚函数,子类还需要申明为virtual吗?为什么。
750. C也可以通过精心封装某些函数功能实现重用,那C++的类有什么优点吗,难道仅仅是为实现重用。
751. C++特点是什么,如何实现多态?画出基类和子类在内存中的相互关系。
752. 为什么要引入抽象基类和纯虚函数?
753. 介绍一下模板和容器。如何实现?(也许会让你当场举例实现)
754. 你如何理解MVC。简单举例来说明其应用。
755. 多重继承如何消除向上继承的二义性。
756. 什么是并行计算?
757.与10.110.12.29mask 255.255.255.224属于同一网段
758.讲一讲Makefile的内容.
759.讲一讲C++的内联函数
760.vector, deque, list, set, map底层数据结构 vector
“前面”增加数据。
761.宏定义的优缺点
762.bfs和dfs如何遍历
763. CPU如果访问内存?
764. 找出在A数组中,B数组中没有的数字,在B数组中,A
765. 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
766. 头文件中的ifndef/define/endif有什么作用?
767. #include<file.h> 与 #include “file.h"的区别?
768. 评价一下C/C++各自的特点
769. const 有什么用途?
770. const和#define有什么区别?
771. 关于sizeof小结的。
772. sizeof与strlen的区别?
773. 指针和引用的区别?
774. 数组和指针的区别?
775. 空指针和悬垂指针的区别?
776. C++中有malloc/free,为什么还有new/delete?
777. 什么是智能指针?
778. 面向对象技术的基本概念是什么,三个基本特征是什么?
779. C++空类默认有哪些成员函数?
780. 哪一种成员变量可以在一个类的实例之间共享?
781. 继承层次中,为什么基类析构函数是虚函数?
782. 为什么构造函数不能为虚函数?
783. 如果虚函数是有效的,那为什么不把所有函数设为虚函数?
784. 什么是多态?多态有什么作用?
785. 重载和覆盖有什么区别?
786. 公有继承、受保护继承、私有继承
787. 有哪几种情况只能用构造函数初始化列表而不能用赋值初始化?
788. 什么是虚指针?
789. C++如何阻止一个类被实例化?一般在什么时候将构造函数声明为private?
790. main函数执行之前会执行什么?执行之后还能执行代码吗?
791. 请描述进程和线程的区别?
792. 进程间如何通信?
793. 在网络编程中涉及并发服务器,使用多进程与多线程的区别?
794. TCP和UDP有什么区别。
795. 调用函数时要进行参数压栈,一般情况下顺序是从最右边参数往左压栈。
797. 请讲述堆和栈的区别。
798. 全局变量放在数据段,内部变量static int count;
799. 字符数组与字符串的比较:最明显的区别是字符串会在末尾自动添加空字符。
801. 类使用static成员的优点,如何访问?
802. static数据成员和static成员函数
803. static成员变量定义放在cpp文件中,不能放在初始化列表中。Const static成员可就地初始化。
805. static关键字的作用。
806. 奈奎斯特定理
808. 多态类中的虚函数表是 Compile-Time,还是 Run- Time时建立的?
809. 一个父类写了一个 virtual 函数,如果子类覆盖它的函数不加 virtual ,也能实现多态?
810. 完成字符串拷贝可以使用 sprintf、strcpy 及memcpy 函数,请问这些函数有什么区别,你喜欢使用哪个,为什么?
811. 应用程序在运行时的内存包括代码区和数据区,其中数据区又包括哪些部分?
812. C++函数中值的传递方式有哪几种?
813. C++里面是不是所有的动作都是main()引起的?如果不是,请举例.
814. 下列哪两个是等同的
815. 内联函数在编译时是否做参数类型检查?
816. 全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
817. 有 A 、 B 、 C 、 D 四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时 1 、 2 、 5 、 10 分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安 排,能够在 17 分钟内这四个人都过桥?
818. static全局变量与普通的全局变量有什么区别?static 局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
819. 程序的局部变量存在于(堆栈)中,全局变量存在于
820. 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
821. 有1,2,. 一直到n的无序数组,求排序算法,并且要求时
822. sizeof相关系列问题, const相关系列问题
823. 写出二分查找的代码.
825. 查找第一个匹配子串位置,如果返回的是s1长度len1表示没有找到
827. 实现strcmp函数
829. 用指针的方法,将字符串“ABCD1234efgh”前后对调显示
830. 给定字符串A和B,输出A和B中的最大公共子串。比如A=“aocdfe” B=“pmcdfa” 则输出"cdf”
832. 写函数完成内存的拷贝
*outputstr,char *intputstr)
834. 编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。
836. 将一个单链表逆序
837. 循环链表的节点对换和删除。
839. 写出程序删除链表中的所有接点
841. 怎么判断链表中是否有环?
843. 引用与指针有什么区别?
844. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
845. static变量和static 函数各有什么特点?
846. static全局变量与普通的全局变量有什么区别?
847. static函数与普通函数有什么区别:
848. 什么是平衡二叉树?
849. 什么函数不能声明为虚函数?
850. 冒泡排序算法的时间复杂度是什么 O(n^2) 快速排序
851. 写出float x 与“零值”比较的if语句。
852. 进程间通信的方式有?
853. const 符号常量;
854. c和c++中的struct有什么不同?
855. 纯虚函数如何定义?使用时应注意什么?
856. 数组和链表的区别
857. 线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?
858. 一语句实现x是否为2的若干次幂的判断
860. 输出下面程序结果。
861. 写出程序运行结果
862. 求函数返回值,输入x=9999;
863. 用户输入M,N值,从1至N开始顺序循环数数,每数到 M输出该数值,直至全部输出。写出C程序。
864. 有10亿个浮点数,求出其中最大的10000个 ,用了标准库的,不让用的话,只能自己写堆函数
865. 在不用第三方参数的情况下,交换两个参数的值 感觉比较:( , bt 而且还是基础题。
866. 写一段程序,找出数组中第k大小的数,输出数所在的位置。
867. 求1000!的未尾有几个0(用素数相乘的方法来做,如
868. 编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数
870. 斐波拉契数列递归实现的方法如下:
871.将一个数字字符串转换为数字.“1234” -->1234
872. 编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数
874. 用递归算法判断数组a[N]是否为一个递增数组。
875. 运用四色定理,为N个局域举行配色,颜色为1、2、
876. 给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数
877. 象搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前十条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G,
878. 国内的一些帖吧,如baidu,有几十万个主题,假设每一个主题都有上亿的跟帖子,怎么样设计这个系统速度最好,请描述思想,写出算发(c语言),空间和时间复杂度,
879. 用两个栈实现一个队列的功能?要求给出算法和思路!
880. 求组合数: 求n个数(1…n)中k个数的组合 如:
881. 下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么?
882. 下面的代码有什么问题?
884. 下面代码有什么错误?
885. 下面代码有什么问题?
886. 下面代码有什么问题?
887. 下面代码有什么问题?
888. 下面代码有什么问题?
889. 下面这个程序执行后会有什么错误或者效果:
890. 请找出下面代码中的所以错误
891. 请问下面程序有什么错误?
892.32位,64位系统中,各种常用内置数据类型占用的字 节数?
893. 悬空指针与野指针区别
894. vector、map、multimap底层数据结构
895. C++的内存分区
896. 结构与联合有和区别?
897. 将“引用”作为函数参数有哪些特点?
898. 多态,虚函数,纯虚函数
899. delete与 delete []区别
900. new、delete、malloc、free关系
901. 链表和数组存储线性表的比较
902. C语言中链表的特点
903. C语言中链表定义及结构
904. C++中的临时对象
905. C++中的析构函数
906. C++中对象的构造的顺序
907. C++中赋值和初始化的区别
908. C++类成员的初始化
909. C++什么时候需要进行深拷贝
910. 拷贝构造函数的意义
911. 无参构造函数和拷贝构造函数的比较
913. C++中带参数的构造函数
914. C++中的构造函数
915. C++对象初始化
916. C++中类和对象两个基本概念
918. C++中类之间的基本关系
919. C++中类成员的作用域
920. C++中类的关键字
921. C++中类声明和实现的分离
922. C++中的命名空间
923. C和C++相互调用
924. 函数重载的定义、条件、注意事项
925. C++中 inline 内联编译的限制
926. 内联函数的定义和特点
927. C++引用的意义
928. C++引用的本质
929. C++中特殊的引用–const引用
930.C 到 C++ 的升级(至少列出三点)
931.C和C++语言中的三目运算符
932.宏的局限和妙用
933.C 语言中的顺序点
934. C/C++语言中的函数参数
935. 声明和定义
936. C/C++语言中内存操作的交通规则
937. C/C++语言中常见的内存错误
938. 内存操作的基本原则
939. C/C++语言中野指针的含义
940. C/C++语言中文件布局在内存中的映射
941. C/C++语言中程序与进程
942. C/C++程序中的静态存储区
943. C/C++程序中的堆
944. C/C++程序中的栈
945. C语言中calloc 和 realloc 函数
946. malloc和free函数及使用过程需要注意的地方
947. C语言中动态内存分配
948. C语言中的指针阅读技巧
949. C语言中的函数指针
950. C语言中指向指针的指针
951. C语言中的数组指针和指针数组
952. C语言中字符串相等的比较
953. C语言中的字符串和字符数组
954. 数组参数
955. 数组的访问方式
956. 数组地址与数组名
957. C++中类封装的基本概念
958. C++中的引用基本点
959. 函数设计原则
960. C语言中的回调函数
961. C语言中二维数组参数
962. 数组的本质
963. 数组的含义
964. C语言中#pragma 的使用
965. C语言中#line的用法
966. C语言中#error的用法
967. c语言中数组参数退化为指针的意义
968. 程序中的顺序点
969. 面向过程的程序设计
970. C语言中的函数类型
971. C语言二维数组与二级指针
972. C语言中字符串的长度
973. 指针的运算
974. 数组名的知识点
975. C语言中的条件编译
976. C语言中函数和宏定义的对比
977. c语言中动态库和静态库的使用
978. c语言中的逗号表达式
979. C语言中的单引号和双引号
980. C语言中接续符和转义符
981. C语言中union关键字
982. C语言中变量的属性关键字
983. c语言中enum关键字的作用
984. C语言中sizeof关键字的作用
985. c语言中extern关键字的作用
986. C语言中volatile关键字的作用
987. C语言中const关键字的作用
988.‘#’与‘##’的区别
989. 如何引用一个已经定义过的全局变量?
990. 大小端问题
991. typedef关键字
992. 什么是封装?C++中是如何实现的?
993. C与C++各自是如何定义常量的?有什么不同?
994. 内存的分配方式的分配方式有几种?
995. 头文件中的 ifndef/define/endif 干什么用?
996. 什么是预编译?何时需要预编译?
997. 在C++程序中调用被C编译器编译后的函数,为什么要 加extern“C”声明?
998. memset ,memcpy 的区别
999. 一下三种指针的区别?
1000.“常量指针”和“指针常量”有什么区别?
2.的声明和定义有什么区别
为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,
但是只在一个地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空
间,
如外部变量。
3.写出 bool 、int、 float、指针变量与“零值”比较的 if 语句
注意:应特别注意在 int、指针型变量和“零值”比较的时候,把“零值”放在左边,这样当把“==” 误写成“=” 时,编译器可以报错,否则这种逻辑错误不容易发现,并且可能导致很严重的后果。
4.sizeof 和 strlen 的区别
sizeof 和 strlen 有以下区别:
1sizeof 是一个操作符,strlen 是库函数。
2sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘\0‘的字符串作参数。
3编译器在编译时就计算出了 sizeof 的结果。而 strlen 函数必须在运行时才能计算出来。并且 sizeof 计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。
4数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。
注意:有些是操作符看起来像是函数,而有些函数名看起来又像操作符,这类容易混淆的名称一定要加 以区分,否则遇到数组名这类特殊数据类型作参数时就很容易出错。最容易混淆为函数的操作符就是sizeof。
4.C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
在 C 中 static 用来修饰局部静态变量和外部静态变量、函数。而 C++中除了上述功能外,还用来定义类的成员变量和函数。即静态成员和静态成员函数。
注意:编程时 static 的记忆性,和全局性的特点可以让在不同时期调用的函数进行通信,传递信息,而
C++的静态成员则可以在多个对象实例间进行通信,传递信息。
5.C中的 malloc 和C++中的 new 有什么区别
malloc 和 new 有以下不同:
(1)new、delete 是操作符,可以重载,只能在 C++中使用。
(2)malloc、free 是函数,可以覆盖,C、C++中都可以使用。
(3)new 可以调用对象的构造函数,对应的 delete 调用相应的析构函数。
(4)malloc 仅仅分配内存,free 仅仅回收内存,并不执行构造和析构函数
(5)new、delete 返回的是某种数据类型指针,malloc、free 返回的是 void 指针。
注意:malloc 申请的内存空间要用 free 释放,而 new 申请的内存空间要用 delete 释放,不要混用。因为两者实现的机理不同。
6.写一个“标准”宏 MIN
注意:在调用时一定要注意这个宏定义的副作用,如下调用:
p 指针就自加了两次,违背了 MIN 的本意。
7.一个指针可以是 volatile 吗
可以,因为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改一个 指向一个 buffer 的指针时,必须用 volatile 来修饰这个指针。
说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数值是个整型数 据,和整型变量不同的是,这个整型数据指向的是一段内存地址。
8.a 和&a 有什么区别
请写出以下代码的打印结果,主要目的是考察 a 和&a 的区别。
输出结果:2,5。
注意:数组名 a 可以作数组的首地址,而&a 是数组的指针。思考,将原式的 int *ptr=(int *)(&a+1); 改为 int *ptr=(int *)(a+1);时输出结果将是什么呢?
9.简述 C、C++程序编译的内存分配情况
C、C++中内存分配方式可以分为三种:
(1)从静态存储区域分配:
内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为 有系统会善后。例如全局变量,static 变量等。
(2)在栈上分配:
在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。 栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(3)从堆上分配:
即动态内存分配。程序在运行的时候用 malloc 或 new 申请任意大小的内存,程序员自己负责在何时用free 或 delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆 内碎块。
一个 C、C++程序编译时内存分为 5 大存储区:堆区、栈区、全局区、文字常量区、程序代码区。
…