第七章预处理与结构体十个问题及解答
来源:互联网 发布:ubuntu安装golang1.7 编辑:程序博客网 时间:2024/06/12 21:54
第七章预处理与结构体十个问题及解答
1.预处理的定义是什么?
所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。预处理是c语言的一个重要功能,它由预处理程序负责完成。当对一个源程序进行编译时,系统将自动引用预处理程序对源程序中的预处理部分进行处理,处理完毕自动进入对源程序的编译。
2.无参宏定义和带参宏定义的一般形式分别是什么?
无参宏定义:
#define 标识符 字符串
带参宏定义:
#define 宏名(形参表) 字符串
3.对于宏定义需要注意哪几点?
1)宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不做任何检查,如有错误,只能在编译已被宏展开后的源程序时发现。
2)宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。
3)宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。
4)宏名在源程序若用引号括起来,则预处理程序不对其进行宏代换。
5)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。
6)对"输出格式"作宏定义,可以减少书写麻烦。
4.带参宏定义与自定义函数的区别?
1)在带参宏定义中,形式参数不分配内存单元,因此不必作类型定义,而宏调用中的实参有具体的值,要用它们去代换形参,因此必须作类型说明。而在函数中,形参与实参是两个不同的量,各有自己的作用域,调用时要把实参值赋予形参,进行"值传递"。而在代参宏中,只是符号代换,不存在值传递的问题。
2)在宏定义中的形参是标识符,而宏调用中的实参可以是表达式。
5.文件包含的功能是什么?
文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。
6.文件包含需要注意什么?
1)包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来。
2)一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。
3)文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。
7.结构体和数组的的比较?
1)都由元素组成。
2)各个元素在内存中的存储空间是连续的。
3)数组中各个元素的类型相同,而结构体中的各个元素的数据类型可以不相同。
8.#define和 typedef的区别?
#define定义 可读 的常量和一些宏语句,而typedef则常用来定义关键字,冗长的类型的别名。宏定义只是简单的字符串代换(原地扩展),而typedef则不是原地扩展,它的新名字具有一定的封装性,以致新命名的标识符具有更容易定义变量的功能。
9.结构体和联合体的区别?
结构体和联合体都是由多个不同的数据类型成员组成的,但在任何同一时刻,联合体中只存放了一个被选中的成员,而结构体的所有成员都存在,在结构体中,各成员都占有自己的内存空间,他们是同时存在的,一个结构体变量的总长度等于所有成员长度之和。在联合体中,所有成员不能同时占用它的内存空间,他们不能同时存在,联合体变量的长度等于最长的成员的长度。
10.什么是位段?
位段是以位为单位来定义结构体(或联合体)中的成员变量所占的空间,含有位段的结构体(或联合体)称为位段结构,采用位段结构既能够节省空间,又方便操作。
一般格式:
type [var]: digits
- 第七章预处理与结构体十个问题及解答
- 第五章数组与指针十个问题及解答
- 第四章语句十个问题及解答
- 第八章函数十个问题及解答
- 大话数据结构第四章栈十个问题及解答
- Linux C 第十一章文件操作十个问题及解答
- 操作系统基础训练十个问题及解答
- 操作系统基础训练十个问题及解答
- 操作系统基础训练十个问题及解答
- 预处理与结构体
- Linux C第十二章进程控制编程十个问题及解答
- Linux C 编程第13章进程间通信方式 十个问题及解答(1)
- Linux C编程 第13章进程间通信方式十个问题及解答(2)
- Linux C编程第十四章多线程编程十个问题及解答
- Linux C 第十五章通信网络编程十个问题及解答(1)
- Linux C 第十五章网络编程十个问题及解答(2)
- 做百度优化常见的十个问题及解答
- 大话数据结构第三章链表十个问题及解答
- 在线翻译工具
- jQuery之属性操作
- Ambari LogSearch中监控新服务日志
- 利用amWiki轻松打造知识库或技术文档系统
- NOI训练行动路线图
- 第七章预处理与结构体十个问题及解答
- mysql 触发器
- 【Android training】与其他应用交互 Intent
- 异常
- Nodejs 使用eventproxy来控制并发
- node+mongoose.save out of memory
- Java ArrayList的元素添加移除之java.util.ConcurrentModificationException异常分析
- 正则表达式
- 整理:npm安装太慢,切换镜像方法