C语言分类复习题.pdfVIP

  • 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)

1亿VIP精品文档

相关文档