C++ 数据类型2025 年 8 月 29 日 | 阅读 16 分钟 C++ 中的数据类型指定变量可以存储的数据类型、可以占用的内存量以及允许的操作。 C++ 数据类型可以分为三个主要类别:
1. 基本(内置)数据类型这些数据类型是数据表示的基础,由 C++ 语言预定义。它们确定了变量可以保存的数据类型、可以占用的内存量以及可以使用它进行的活动。在这些类型中,整型通常用于索引、通用数据存储和数值计算。这些是基本类型:
a. 整数类型 (int)int (整数) 数据类型用于存储不带小数点的整数。对于表示不需要小数精度的数值,它是 C++ 中最常用的数据类型之一。 i. 带符号 int: 通常使用 4 字节内存来存储正数和负数。对于 32 位系统,它接受的值在 -2,147,483,648 和 2,147,483,647 之间。 示例 ii. 无符号 int: 它仅在 4 字节内存范围内存储正整数(0 及以上)。正值范围(0 至 4,294,967,295)是带符号整数(-2,147,483,648 至 2,147,483,647)的两倍。 示例 iii. 短整型 int: 一种较小的整数类型,通常需要两字节内存。它的范围有限(对于带符号短整型,范围为 -32,768 至 32,767),但在内存受限的环境中可以节省内存。 示例 iv. 长整型 int: 通常占用 4 或 8 字节,这种 int 类型用于存储比普通 int 更大的数字。其范围取决于系统架构,尽管在 32 位系统上,它与 int 相当。 示例 C++ 整数类型示例让我们以一个例子来说明 C++ 中的整数类型。 示例编译并运行输出 The value of a is: 13 The value of b is: 28 The value of c is: 32747 The value of d is: 1000000 说明 此 C++ 程序声明了四个整数变量:a(普通 int)、b(无符号 int,用于非负值)、c(短整型 int,范围有限)和 d(长整型 int,用于较大的数字)。使用 std::cout,在初始化后打印它们。如预期,输出显示了每个变量分配的值。 b. 浮点类型为了存储实数(包括分数和小数),C++ 提供了三种主要的浮点数据类型。这些类型提供不同的精度和内存使用级别,使其适用于各种数值计算。 i. float(单精度): float(单精度)使用 4 字节,提供 6-7 位小数的精度。它适用于不需要极高精度的基本计算。 示例 ii. double(双精度): 对于浮点运算,默认值是 double(双精度),它使用 8 字节并提供 15-16 位小数的精度。 示例 iii. long double(扩展精度): 对于需要高精度科学计算,使用 long double(扩展精度)。它使用超过 10 字节,并提供 19 到 21 位小数的精度。 示例 C++ 浮点类型示例让我们以一个例子来说明 C++ 中的浮点类型。 示例编译并运行输出 The float value is: 3.1415927410 The double value is: 3.1415926535 The long double value is: 3.1415926536 说明 此 C++ 程序显示了 float、double 和 long double 数据类型之间的精度差异。使用 std::fixed 和 std::setprecision(10) 操纵器,数值以十位小数显示。程序使用不同精度级别的数学常数 π(pi)来初始化三个变量(f_1、d_2 和 ld_3)。为了演示 long double 比 float 和 double 保持更高的十进制精度,它将每个数字打印到控制台。 c. 字符类型 (char)在 C++ 中,使用 char 数据类型可以在 8 位(1 字节)内存中存储单个字符。ASCII(美国信息交换标准代码)编码主要用于表示字符。但是, wchar_t、char16_t 和 char32_t 用于为 Unicode 字符提供 UTF-16 和 UTF-32 编码。这些数据类型可用于表示 ASCII 或 Unicode 集合中的任何字符,包括数字、字母、符号等。 示例 C++ 字符类型示例让我们以一个例子来说明 C++ 中的字符类型。 示例编译并运行输出 Character: C Digit: 7 Symbol: $ The ASCII of C is 67 The ASCII of 7 is 55 The ASCII of $ is 36 说明 此 C++ 程序演示了如何使用 char 数据类型,将一个字符存储在三个变量 letter、digit 和 symbol 中。之后,这些字符使用 std::cout 打印,并使用 int() 将它们转换为数字,以便也能显示关联的 ASCII 值。ASCII 表中的字符被赋予称为 ASCII 值的数字代码。例如,符号 C、7 和 $ 分别代表 67、55 和 36。此程序显示了 ASCII 转换如何对许多文本处理方法很有用,因为字符在内部存储为数值。 d. 布尔类型 (bool)在 C++ 中,布尔数据类型 (bool) 存储逻辑值,编码真和假的概念。在控制流、条件语句和决策制定中,它主要用于有效地评估逻辑表达式和条件。 示例 C++ 布尔类型示例让我们以一个例子来说明 C++ 中的布尔类型。 示例编译并运行输出 User logged in: 1 User has access: 0 Access denied! 说明 此 C++ 程序演示了如何使用条件语句和布尔变量。它将 isLoggedIn 初始化为 true,将 hasAccess 初始化为 false,然后使用 cout 打印它们的值。if 语句中使用逻辑 AND (&&) 运算符来确定是否两个条件都为真;如果是,则打印“Access granted!”;否则,打印“Access denied!”。由于 hasAccess 为 false,结果将是“Access denied!”。 e. Void 类型 (void)C++ 中的 void 类型表示数据类型的缺失。它主要用于定义泛型指针、指定函数不返回值以及确定带有未定义参数的函数。与其它数据类型不同,void 没有值,不能直接用于声明变量。 C++ Void 类型示例让我们以一个例子来说明 C++ 中的 Void 类型。 示例编译并运行输出 Hello World! 说明 由于给定 C++ 程序中的 greet() 方法定义为 void 返回类型,因此它不返回任何内容。"Hello World!" 在函数中使用 cout 打印到控制台。main() 方法调用 greet() 函数,该函数执行代码并显示消息。当程序打印“Hello World!”并返回 0 时,认为程序已成功执行。 2. 派生数据类型派生数据类型由基本类型构建而成,以提高功能性并实现复杂的数据处理和存储。这些类型的特性支持结构化编程方法来高效处理数据并提供高效的内存管理。 派生数据类型有几种派生数据类型,如下所示:
a. 数组数组是具有相同类型的、存储在连续内存位置的固定大小元素的集合。通过在单个变量名下存储多个值,数组提高了数据操作的效率。 i. 一维数组 一维数组是存储在内存中的元素的线性集合。它用于存储值列表,因为它仅使用一个索引声明。 示例 ii. 多维数组(二维、三维等) 多维数组是数组的数组,通常用于表示矩阵或网格。更高的维度扩展了二维数组中的行和列。 示例 iii. 动态数组 运行时动态数组分配通过指针和 new 关键字完成。它们需要手动释放,但允许灵活地使用内存。 示例 C++ 数组示例让我们以一个例子来说明 C++ 中的数组。 示例编译并运行输出 One-Dimensional Array: 10 20 30 40 50 Two-Dimensional Array (Matrix): 21 42 35 54 87 64 Enter the size of the dynamic array: 3 Dynamic Array: 10 20 30 说明 提供的 C++ 程序演示了一维、二维和动态数组等各种数组类型。使用循环,它首先用五个数字初始化一维数组,然后打印其内容。之后,它定义了一个二维(2x3)矩阵,并通过迭代其行和列以矩阵形式显示值。 接下来,它询问用户动态数组的大小,使用 new 分配内存,用 10 的倍数初始化数组,并打印数据。为了防止内存泄漏,最后使用 delete[] 释放分配的内存。该程序演示了动态内存分配、数组处理和 C++ 迭代技术。 b. 指针一个指针是一个在内存中存储另一个变量地址的变量。它通过存储内存位置的引用而不是直接值来提高内存操作的效率。指针是数据结构、动态内存分配、函数指针以及函数中高效的参数传递的基础。 C++ 指针示例让我们以一个例子来说明 C++ 中的指针。 示例编译并运行输出 The value of a is: 100 The address is: 0x7ffd7a1800c4 The pointer ptr stores address: 0x7ffd7a1800c4 The value pointed by ptr: 100 说明 此 C++ 程序演示了使用指针存储和检索内存地址。声明一个名为“a”的整数变量,其值为 100,并伴随一个名为 ptr 的指针,该指针持有“a”的地址。利用指针解引用 (*ptr),程序输出“a”的值、其内存地址、ptr 中保存的地址以及该地址处的值。这演示了直接使用指针来访问和修改内存。 c. 引用在 C++ 中,引用是另一个变量的别名。引用不创建新的存储位置,而是直接修改现有变量的名称。它表示使用引用进行的任何更改都会直接影响原始变量。 C++ 引用示例让我们以一个例子来说明 C++ 中的引用。 示例编译并运行输出 Original value: 5 Modified value: 10 说明 此 C++ 程序演示了引用的概念。它定义了一个整数变量 num,并创建了一个引用 ref,作为 num 的别名。当程序输出 num 时,首先显示 5。最后输出显示 10,这是因为将 ref 改为 10 会直接更新 num。这表明引用为变量提供了另一个名称,可以进行有效的更改而无需创建副本。 3. 用户定义数据类型通过使用用户定义数据类型,程序员可以创建 C++ 中除了已有的基本类型之外的各种类型。这些类型支持模块化编程、数据组织和代码可读性。它们允许将相关的变量和功能组合在一个名称下,从而使复杂程序更容易管理和组织。 用户定义数据类型 C++ 中有几种用户定义数据类型,如下所示:
1. 结构体结构体(struct)是一种用户定义数据类型,它允许将不同数据类型的多个变量组合在一个标识符下。它有助于组织相关数据,并使代码更易于阅读和管理。像学生、员工或汽车这样具有多个属性的真实世界实体通常被表示为结构体。 C++ 结构体示例让我们以一个例子来说明 C++ 中的结构体。 示例编译并运行输出 The ID is: 18 The Name is: John The Grade is: 86.5 说明 包含的 C++ 程序创建了一个名为 Student 的结构体,该结构体组合了三个属性:grade(浮点数)、name(字符数组)和 id(整数)。使用 cout,displayStudent() 函数打印作为常量引用的 Student 结构体的详细信息。在 main() 方法中,创建并初始化了结构体变量 s1,其值为 {18, "John", 86.5}。然后,程序通过调用 displayStudent(s1) 将 John 的详细信息输出到控制台。 b. 类类是 C++ 面向对象编程 (OOP) 的一个关键部分。它充当对象创建的蓝图,并且是一种用户定义的数据类型。类包含数据成员(变量)和成员函数(方法),它们提供了从类实例化的对象的特性和行为。这种封装通过促进数据抽象和隐藏来确保程序的模块化和可重用性。 C++ 类示例让我们以一个例子来说明 C++ 中的类。 示例编译并运行输出 Bike brand: KTM Bike brand: Royal Enfield 说明 Bike 类使用公共构造函数初始化,并有一个私有数据成员 brand。为了确保封装,showBrand() 函数显示品牌名称。在 main() 中创建的两个对象(bike1 和 bike2)的品牌是通过 showBrand() 显示的。 c. 联合体联合体是用户定义数据类型,允许将多个数据类型组合成一个实体,非常类似于结构体。与结构体不同,联合体的成员共享同一内存位置。因为更新一个成员会覆盖之前的数据,所以一次只能有一个成员保存值。 C++ 联合体示例让我们以一个例子来说明 C++ 中的联合体。 示例编译并运行输出 Integer Value: 48 Float Value: 3.14 Character Value: A After modification, the Integer Value is: 1078523201 说明 此 C++ 程序定义了一个名为 Demo 的联合体;它一次只能容纳 char、float 或 int。Main() 通过顺序地将不同值赋给联合体变量 d 来演示当分配新值时联合体如何覆盖先前的数据。输出显示了只有最近赋的值是有效的,而先前的值由于共享内存而被修改。 d. 枚举 (enum)在 C++ 中,枚举(enum)是一种用户定义数据类型,通常使用它为整数常量赋予有意义的名称。开发人员可以使用枚举创建一组命名的整数常量,而不是使用原始整数,这提高了程序的可读性、结构和可维护性。 C++ 枚举示例让我们以一个例子来说明 C++ 中的枚举 (enum)。 示例编译并运行输出 Your favorite color is Blue!! 说明 此 C++ 程序为 enum Colour 定义了三个值:RED、GREEN 和 BLUE。main() 函数声明并将 BLUE 值赋给类型为 Colour 的变量 favoriteColour。如果 favoriteColour 为 BLUE,则条件语句会打印“Your favorite color is Blue!!”. e. Typedef 和 Using在 C++ 中,Typedef 和 Using 用于为预先存在的 C++ 数据类型提供新名称,从而提高代码的可读性和可移植性。它们充当别名,而不是创建新的数据类型,这有助于代码适应性和跨不同平台的修改。 C++ Typedef 和 Using 示例让我们以一个例子来说明 C++ 中的 Typedef 和 Using。 示例编译并运行输出 x: 10 y: 10000000000 说明 此 C++ 程序使用 typedef 将 uint 定义为 unsigned int 的别名,并将 ull 定义为 unsigned long long 的别名。在 main() 中,在将 x 声明为 unsigned int 并将 y 声明为 unsigned long long 后,将值赋给 x 和 y。最后,它使用 cout 输出它们的值。 C++ 数据类型选择题1. 在 C++ 中,以下哪项不是基本数据类型?
答案:c) string 2. C++ bool 数据类型的大小是多少?
答案:b) 1 字节 3. 在 C++ 中声明浮点变量的正确方法是什么?
答案:a) float num = 10.5; 4. 在 C++ 中,以下关于 enum 的哪项声明是正确的?
答案:c) enum 默认为其成员分配整数值。 5. 当在 C++ 中存储超出 int 范围的大整数值时,哪种数据类型最合适?
答案:d) long long 下一主题C++ 关键字 |
我们请求您订阅我们的新闻通讯以获取最新更新。