- 1
- 0
- 约1.06万字
- 约 16页
- 2026-02-08 发布于河南
- 举报
C语言分类复习题
一、条件编译
1、必选题
1)在预处理阶段编译器完成哪些工作
*宏替换
*条件编译
*删除注释
*文件包含
2)#include和#include“”的区别
前者是标准方式,若指定头文件目录(如include)则从此目录中找,
否则系统要到存放C库函数头文件所在的目录中寻找要包含的文件.
后者编译器先从存放C源文件的目录中查找,然后若用户指定
目录(include目录),再从此目录中寻找要包含的文件,若找不到
再按标准方式查找.
3)条件编译的作用
一般情况下,源程序中所有的行都进行编译,但是有时希望对其
中一部分内容在满足一定条件下才进行编译,也就是对一部分内容指
定编译的条件,这就是条件编译。条件编译有利于提升程序的可移植
性,增加程序的灵活性。
2、可选题
1)条件编译能解决重复包含吗,若可以的话,在同一个C源文件
中重复包含同一个头文件和在几个C源文件中重复包含同一个头文件
有区别吗,条件编译都能解决吗?
条件编译可解决在同一个C源文件的重复包含问题,不能解决在
多个C源文件中的重复包含问题。
2)条件编译的几种方式
a)#ifdef标识符(宏名)//或#ifdefined(标识符)
程序段1
#else
程序段2
#endif
作用:当所指定的标识符已经被#define命令定义过,则在程序编
译阶段只编译
程序段1,否则编译程序段2。#else可以没有。
b)#ifndef标识符//或#if!defined(标识符)
程序段1
#else
程序段2
#endif
作用:若标识符未被#define命令定义过则编译程序段1,否则编译
程序段2
c)#if常量表达式
程序段1
#else
程序段2
#endif
二、宏定义
1、必选题
1)宏定义的分类和作用
带参和不带参两种
提升执行效率、便于代码维护。
2)宏替换(宏展开)在什么时候发生
预处理阶段
3)删除宏定义的命令是什么
#undef
4)在定义宏时,替换宏的内容参数上加和不加括号有区别吗,请
讲理由。
参数不加括号有时会影响执行的顺序,建议加上括号。
5)宏能递归吗,和函数执行谁的效率高,
不能,宏展开效率高
6)将宏参数加入到字符串常量中的方式有哪些?
#和##
7)在宏定义中#和##的作用是什么
#将参数作为普通字符串使用
##连接两侧的符号
2、可选题
1)gcc–D参数的作用
可以取代宏替换,在编译时通过-D后面的参数来替换源文件中的
变量值。
如:
gcc-Dname=str-obin/undefsrc/undef.c
2)宏定义和函数有哪些区别
*宏展开的效率高于函数调用和返回的效率
*宏不区分参数类型;函数必须声明特定参数类型
*宏可以用类型作为参数;函数无法实现
*宏不能递归
三、Sizeof
1、必选题
1)sizeof和strlen的区别
a)sizeof是一个操作符,strlen是库函数。
b)sizeof的参数可以是数据类型,也可以是变量,而strlen
原创力文档

文档评论(0)