- 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语言常见笔试题总结
【1 使用宏】
1.1 #ifdef NDEBUG
#define TRACE(S) S
#else
#define TRACE(S) printf(%s;\n, #S); S
#endif
问:以上TRACE()宏的作用是什么?
如果定义了DEBUG这个宏,TRACE的作用就是跟踪程序的执行过程,便于查找出错位置,否则TRACE被直接替换为原语句。
1.2 #error的作用?
#error用于向编译器报错,并输出它后面带的错误信息。例如:
#ifndef SOMETHING
#error SOMETHING not defined!
#endif
如果在这段代码之前未定义过SOMETHING,则在编译时出错,并给出SOMETHING not defined!的错误信息。
1.3 定义一个宏,求出给定数组中的元素的个数
#define NELEMENTS(array) (sizeof(array) / sizeof((array)[0]))
1.4 定义一个宏,求出给定结构中给定成员的偏移量
#define OFFSET(structure, member) ((int) (((structure *)0)-member))
【2 数据声明和定义】
给定以下类型的变量a的定义式:
a) An integer
int a;
b) A pointer to an integer
int *a;
c) A pointer to a pointer to an integer
int **a;
d) An array of 10 integers
int a[10];
e) An array of 10 pointers to integers
int *a[10];
f) A pointer to an array of 10 integers
int (*a)[10];
g) A pointer to a Ifunction/I that takes an integer as an argument and returns an integer
int (*a)(int );
h) An array of ten pointers to Ifunction/Is that take an integer argument and return an integer
int (*a(int ))[10];
【3 复杂类型(1)】
有如下表达式:
char (*(*x())[])();
请用文字描述x是什么。
首先,确定标识符:x
x是一个函数,没有参数:x()
返回值是一个指针:*x()
这个指针指向一个数组:(*x())[]
数组中的每个元素是指针:*(*x())[]
指向一个不带参数的函数:(*(*x())[])()
函数的返回值是char:char (*(*x())[])()
这里,要知道*、()和[]的优先级
【4 复杂类型(2)】
jmp_buf的定义:
typedef struct _jmp_buf
{
REG_SET reg;
int extra[3];
} jmp_buf[1];
setjmp函数的原型:
extern int setjmp (jmp_buf __env);
问:调用setjmp时传递__env的内容,还是传递指针?
数组名作为函数参数时,应该是传递地址/指针
【5 头文件】
问:为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern C {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */
在编译源文件时,C编译器和C++编译器都会对符号(函数或变量)名作某些修正,但两者采用的修正方法不同,所以两者生成的目标文件不能互相链接。在C+ +中使用extern C可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接
【6 static关键字】
请说出static关键字的3种用处:
(1)用于全局变量;外部静态变量,只能在本源文件中被引用,不能被其它源文件所引用。
(2)
您可能关注的文档
最近下载
- 心血管-肾脏-代谢综合征患者的综合管理中国专家共识2025解读-1.pptx
- 生态系统课件课件.ppt VIP
- 2024年国网新疆电力有限公司高校毕业生招聘450人(第二批)笔试参考题库附带答案详解.doc
- 关于八项规定主题教育题库(含答案).pdf VIP
- 2025八项规定精神主题教育测试题(含答案).docx VIP
- 深入贯彻中央八项规定精神学习教育知识测试题库(含答案).docx VIP
- 2025年深入贯彻中央八项规定精神学习教育知识竞赛题(附答案)范文.docx VIP
- 关于深入贯彻中央八项规定精神学习教育知识竞赛题(含答案).pdf VIP
- 深入贯彻中央八项规定精神学习教育知识测试题库(含答案)_可搜索.pdf VIP
- 毕业论文-基于单片机的自动避障智能小车控制系统设计.doc VIP
文档评论(0)