- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言面试问答题
注意:该文档由本人从网络和面试经历中总结而得,不保证答案完全正确,如发现问题联系我:caijicheng2006@163.com
1.头文件中的 ifndef/define/endif 干什么用?预处理
答:防止头文件被重复引用
.#include 和 #include “filename.h” 有什么区别?
.头文件的作用是什么?
通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。
头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。
.switch()中不允许的数据类型是?
答:实型
.简述数组与指针的区别数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。
.分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var) 答: BOOL型变量:if(!var) int型变量: if(var==0) float型变量: const float EPSINON = 0.00001; if ((x = - EPSINON) (x = EPSINON) 指针变量: if(var==NULL) 剖析: 考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。 一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。 浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“=”或“=”形式。如果写成if (x == 0.0),则判为错,得0分。
.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?least = MIN(*p++, b);
答:
#define MIN(A,B) ((A) = (B) ? (A) : (B))
MIN(*p++, b)会产生宏的副作用
剖析: 这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换。程序员对宏定义的使用要非常小心,特别要注意两个问题:(1)谨慎地将宏定义中的“参数”和整个宏用用括弧括起来。所以,严格地讲,下述解答:
#define MIN(A,B) (A) = (B) ? (A) : (B)#define MIN(A,B) (A = B ? A : B )
都应判0分;(2)防止宏的副作用。宏定义#define MIN(A,B) ((A) = (B) ? (A) : (B))对MIN(*p++, b)的作用结果是:((*p++) = (b) ? (*p++) : (*p++))这个表达式会产生副作用,指针p会作三次++自增操作。除此之外,另一个应该判0分的解答是:
#define MIN(A,B) ((A) = (B) ? (A) : (B));
这个解答在宏定义的后面加“;”,显示编写者对宏的概念模糊不清,只能被无情地判0分并被面试官淘汰。
.为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh#define __INCvxWorksh #ifdef __cplusplusextern C {#endif /*...*/ #ifdef __cplusplus}#endif #endif /* __INCvxWorksh */
答:头文件中的编译宏
#ifndef __INCvxWorksh
#define __INCvxWorksh#endif的作用是防止被重复引用。
作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在symbol库中的名字与C语言的不同。例如,假设某个函数的原型为:
void foo(int x
您可能关注的文档
最近下载
- 内部调动审批表(模板) .pdf VIP
- 《职工非因工伤残或因病丧失劳动能力程度鉴定标准(试行)》.doc VIP
- 民宿项目建设可行性研究报告.docx VIP
- IEC 61133-2006 车辆组装和运行前的整车试验规范(中文).docx VIP
- 部编人教版七年级历史上册第19课《北魏政治和北方民族大交融》说课课件(共24张).ppt VIP
- 2025年儿童青少年近视防控白皮书.pdf VIP
- 2024年执业助理医师(临床)考试备考重点题库(600题版).doc VIP
- 2023年口腔助理医师考试备考重点题库(600题版).docx VIP
- 临床研究答辩.pptx VIP
- 西门子S7-200 SMART PLC应用技术图解项目教程全册教案.docx VIP
文档评论(0)