目录:点我
一、预备知识
1. 编程模式
- 结构化编程:自顶向下的设计,旨在将大型程序分解为小型任务,反映了过程性编程的思想,即根据执行的操作来构思一个程序。
- 面向对象编程:自底向上的设计,强调的是数据,试图让语言来满足问题的要求,其理念是设计与问题的本质特性相对应的数据格式。该方法有助于创建可重用的代码,实现信息隐藏,为运算符和函数创建多个定义等功能。
- 泛型编程:通过模板实现对多种数据类型进行统一管理的方式,以“使重用代码和抽象通用概念更简单”为目标,强调“独立于特定数据类型”。
2. 程序运行过程
- 编写源代码:使用文本编辑器编写程序,并将其保存到文件中,该文件即为源代码(.cpp);
- 编译源代码:利用编译软件将源代码翻译为主机使用的机器语言,翻译后的程序文件即为目标代码(.o);
- 链接:将目标代码与库文件中所调用的函数、一些标准启动代码组合起来,生成程序的运行阶段版本,该文件即为可执行代码(.out)。
二、开始学习 C++
1. C++ 预处理器和 iostream 文件
C++ 和 C 一样,也是用一个预处理器,该程序在进行主编译之前对源文件进行处理,例如对于代码
#include <iostream> ,预处理会将 iostream 文件中的内容替换该语句,然后将组合后的内容一起发送给编译器。2. 头文件名
像 iostream 这样的文件叫做包含文件(include file,被包含在其他文件中的文件),也叫头文件(header file,被包含在文件起始处)。C 语言中头文件使用扩展名 h ,但是在 C++ 中,对老式的 C 头文件保留了该扩展名,而新式的头文件中没有该扩展名。有些 C 头文件被转换为 C++ 头文件时会去掉扩展名,将其重新命名,例如 math.h 被命名为 cmath ,前缀 c 表示该文件来自 C 语言。对于纯粹的 C++ 头文件,去掉 h 不只是形式上的变化,没有 h 的头文件也可以包含名称空间。
头文件类型 | 约定 | 示例 | 说明 |
C++ 旧式风格 | 以 .h 结尾 | iostream.h | C++ 程序可以使用 |
C 旧式风格 | 以 .h 结尾 | math.h | C、C++ 程序可以使用 |
C++ 旧式风格 | 没有扩展名 | iostream | C++ 程序可以使用,使用 namespace std |
转换后的 C | 加上前缀 c ,没有扩展名 | cmath | C++ 程序可以使用,可以使用不是 C 的特性,如 namespace std |
3. 名称空间
代码
using namespace std 中,std 就是一个名称空间,该语句叫做 using 编译指令。名称空间支持是一项 C++ 特性,当代码中存在两个不同产品时,如果它们均包含一个同名函数,此时编译器将不知道应该使用哪一个版本函数,因此可以使用名称空间来指定版本,例如:百度公司 Baidu::fun();,腾讯公司 Tencent::fun(); 。按照这种方式,仅当头文件没有扩展名 h 时,可以将类、函数、变量等标准组件放置在名称空间中。若是使用 using 指令,则在使用组件时不需要显式的给出具体的名称空间前缀,使得该名称空间中的所有组件均可直接使用。4. endl 与 换行符
使用 cout 进行换行时,有两种方式,一种是使用
cout << endl ,另一种是使用 cout << '\n' ,前者可以确保程序继续运行前刷新输出,而后者不能保证,这意味着在某些情况下使用前者可以将字符光标立即跳转至下一行,而后者可能需要等到下一次输入时才会跳转。三、处理变量
1. 字节
字节通常指的是 8 位的内存单元,但是 C++ 对其定义为:由至少能够容纳实现的基本字符集的相邻位组成。也就是说,可能取值的数目必须等于或超过字符数目。
- 在美国,基本字符集通常是 ASCII 和 EBCDIC 字符集,它们都可以用 8 位来容纳,所以在使用这两种字符集的系统中,C++ 字节通常为 8 位;
- 在国际中,可能需要使用更大的字符集,如 Unicode ,因此其字节可能为 16 位甚至 32 位。
2. 变量长度
C++ 中的变量类型要求确保最小长度来表示:
- short 至少 16 位;
- int 至少与 short 一样长;
- long 至少 32 位,且至少与 int 一样长;
- long long 至少 64 位,且至少与 long 一样长。
因此在不同的系统中,对于变量长度的定义可能是不同的,例如老式机器通常将 int 定义为 16 位,而新式机器则定义为 32 位,这就可能在代码迁移时发生错误。在
climits 头文件中可以查询变量的信息:符号常量 | 表示 |
CHAR_BIT | char 的位数 |
CHAR_MAX | char 的最大值 |
CHAR_MIN | char 的最小值 |
SCHAR_MAX | signed char 的最大值 |
SCHAR_MIN | signed char 的最小值 |
UCHAR_MAX | unsigned char 的最大值 |
SHRT_MAX | short 的最大值 |
SHRT_MIN | short 的最小值 |
USHRT_MAX | unsigned short 的最大值 |
INT_MAX | int 的最大值 |
INT_MIN | int 的最小值 |
UNIT_MAX | unsigned int 的最大值 |
LONG_MAX | long 的最大值 |
LONG_MIN | long 的最小值 |
ULONG_MAX | unsigned long 的最大值 |
LLONG_MAX | long long 的最大值 |
LLONG_MIN | long long 的最小值 |
ULLONG_MAX | unsigned long long 的最大值 |
3. charchar
默认情况既不是没有符号,也不是有符号,而是由 C++ 实现决定,如果编写的程序对符号有特殊要求,应指明其符号类型。
wchar_t (宽字符类型)是 char 的扩展,一般将每个字符存储在一个两字节的内存单元中,有足够的空间来表示系统使用的最大扩展字符集,从底层结构来看,它可能是 unsigned short ,也可能是 int 。由于 cin 和 cout 将输入和输出看作是 char 流,因此不适用于 wchar_t 类型。但是 iostream 头文件的最新版本提供了相应的工具,已经可以使用。另外可以通过给字符或字符串加上前缀 L 来表示宽字符常量和宽字符串。C++11 新增了类型
char16_t 和 char32_t ,两者都是无符号的,前者长 16 位,后者长 32 位。使用前缀 u 表示 char16_t 字符常量和字符串常量,使用前缀 U 表示 char32_t 字符常量和字符串常量。4. const 限定符
const 限定符用于限定常量,通常常量名首字母应大写(或者所有字母大写/加前缀 k )以提醒该变量为一个常量,创建常量的格式如下:const type_name = value; ,常量一旦定义将无法修改。5. 浮点数
浮点数可以采用科学计数法表示,即 E 表示法:
2.52e+8 、9.11E-10 ;在流操作中可以对类型进行指明:1.234f 、1.234F 、1.234l 、1.234L ;其中 f/F 表示 float ,l/L 表示 long double ,默认情况下均为 double 类型。6. auto
该类型可以根据变量自动推断出具体的类型,是 C++11 中新增的工具,用法如下:
auto a = 1.0; // double 、vector<int> v; auto a = v.begin(); // vector<int>原创存证 · 本地哈希 · 43d4e1eb42ad...
算法:SHA-256
时间:2026-10-13
哈希:
43d4e1eb42ad2cba2570c7ca4bc026ddb92d036bd77b5e707c69d7240466c124该信息用于辅助证明当前内容版本,不等同于法律公证或版权登记。
- 作者:BeZer0
- 链接:https://blog.bezer0.cn/%E8%80%83%E7%A0%94/3f80bc13-b7ac-80a3-b0c6-dc52667094f7
- 声明:本文为原创文章,采用 CC BY-NC-SA 4.0 协议,转载请注明作者和原文链接。

