- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、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
您可能关注的文档
- CH7广域网链路技术.pdf.pdf
- ch6小波转换与应用.pdf.pdf
- Ch43 协方差及相关系数.pdf.pdf
- CH5OSPF路由协议.pdf.pdf
- CH9-2平面简谐波及其描述.pdf.pdf
- Ch9-1 正弦稳态电路的分析.pdf.pdf
- chap1 金融市场与金融服务营销概论.pdf.pdf
- chap112011 java 课件.pdf.pdf
- Chap08 EC的安全管理.pdf.pdf
- CHAP1信息论.ppt.ppt
- 中华人民共和国企业所得税法实施条例(2024修订)解读课件.pptx
- 香港特别行政区基本法(1990版)解读课件.pptx
- 民用航空运输不定期飞行管理暂行规定(2024修正)解读课件.pptx
- 外国人在中国收养子女登记办法(2024修正)解读课件.pptx
- 保守国家秘密法实施条例(2024修正)解读课件.pptx
- 烈士褒扬条例(2024修正)解读课件.pptx
- 外国律师事务所驻华代表机构管理条例(2024修正)解读课件.pptx
- 病原微生物实验室生物安全管理条例(2024修正)解读课件.pptx
- 广播电视管理条例(2024修正)解读课件.pptx
- 外交特权与豁免条例(1986版)解读课件.pptx
最近下载
- 配电箱采购合同协议书范本详细(2025年).docx VIP
- 部编版语文写字表六年级上册字帖.pdf VIP
- (高清版)B/T 24421.1-2023 服务业组织标准化工作指南 第1部分:总则.pdf VIP
- 2022年洛阳理工学院教师招聘笔试试题及答案解析.docx VIP
- 城市停车设施规划导则.docx VIP
- 天然气发电厂-燃气-蒸汽联合循环发电机组PPT课件.pptx VIP
- 《《中文核心期刊目录(2017年版)》》.doc VIP
- 基孔肯雅热防控技术指南(2025年版)测试题及参考答案.docx VIP
- 工程测量技术 电子水准仪 电子水准仪.ppt VIP
- 党支部贯彻落实八项规定扎实推进作风建设工作专题党课ppt课件.pptx VIP
文档评论(0)