C++学习笔记:预处理、进制转换与函数默认参数
需积分: 27 3 浏览量
更新于2024-09-08
2
收藏 30KB MD 举报
"C++基础知识的学习笔记,包含了C++的文件转换过程、进制输出、bool类型显示、数组长度计算、防止头文件重复包含、函数参数默认值以及内联函数等核心概念。"
C++作为一门强大的面向对象编程语言,其基础知识涵盖了多个方面。下面将深入解析这些知识点:
1. **文件转换顺序**:
C++程序的编译过程分为多个阶段,首先是预处理器阶段,它处理`#include`指令,展开宏定义,如`#define`,并处理条件编译指令,例如`#ifdef`,生成中间文件hello.i。接着是编译阶段,编译器将预处理后的文本转换为汇编代码,生成hello.s。然后汇编器将汇编代码转化为机器可理解的目标文件hello.o(在Windows系统中可能是hello.obj)。最后,链接器将所有必要的目标文件和库文件合并,生成可执行文件。
2. **进制输出**:
C++提供了多种输出进制的方式,可以使用`std::oct`设置输出为八进制,`std::dec`为十进制,`std::hex`为十六进制。例如,通过`std::cout << std::oct << 数值`可以将数值以八进制形式输出。
3. **boolalpha函数**:
`std::boolalpha`是一个操纵符,用于控制流的布尔输出格式。当它被激活后,`true`和`false`将被打印出来,而不是1和0。
4. **计算数组长度**:
要获取数组的长度,可以使用`sizeof`运算符除以元素的大小。如示例所示,`sizeof(arr)/sizeof(int)`得到的是数组`arr`中元素的个数,即数组的长度。
5. **防止头文件重复包含**:
为了避免头文件在同一编译单元中被多次包含导致的问题,可以使用条件编译指令`#ifndef`,`#define`,`#endif`或者C++特有的`#pragma once`来确保头文件只被包含一次。
6. **函数参数默认值**:
函数参数可以设置默认值,但有默认值的参数必须位于参数列表的末尾。这样,如果调用函数时省略了后面的参数,编译器会使用默认值。例如,`void fun(int i, int j=3, int k=5)`,在不同的调用中,可以根据传入的参数数量和顺序自动填充默认值。
7. **内联函数**:
内联函数是一种优化技术,用于提高程序执行效率。它们在编译时被展开,而不是在运行时进行函数调用。内联函数通常用于小型且频繁调用的函数,以减少函数调用带来的开销。声明内联函数时,前面加上`inline`关键字,例如`inline int max(int a, int b, int c)`。
以上是C++基础知识的部分要点,掌握这些对于理解和编写C++程序至关重要。在实际编程中,还需要理解指针、类与对象、继承、多态、模板等更深入的概念,才能更好地利用C++进行复杂系统的设计和开发。
2019-08-13 上传
2021-04-19 上传
2021-04-19 上传
2021-02-01 上传
2020-03-26 上传
小白大爷
- 粉丝: 7
- 资源: 7
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍