【C++】数据类型
C++ 数据类型可以分为以下几大类:
1. 内置数据类型(基本数据类型)
-
整型:
int
:整数类型,通常是 4 字节。short
:短整型,通常是 2 字节。long
:长整型,通常是 4 字节或 8 字节。long long
:更长的整型,通常是 8 字节。unsigned int
:无符号整型,通常是 4 字节。unsigned short
:无符号短整型。unsigned long
:无符号长整型。unsigned long long
:无符号长长整型。
-
浮点型:
float
:单精度浮点型,通常是 4 字节。double
:双精度浮点型,通常是 8 字节。long double
:扩展精度浮点型,通常是 8 字节或 12 字节。
-
字符类型:
char
:字符类型,通常是 1 字节。signed char
:有符号字符类型。unsigned char
:无符号字符类型。
-
布尔类型:
bool
:布尔类型,表示true
或false
,通常是 1 字节。
-
空类型:
void
:表示没有类型,用于函数返回值、指针类型等。
2. 指针类型(Pointer Types)
指针用于存储变量的内存地址。
int*
:指向int
类型的指针。char*
:指向char
类型的指针。float*
:指向float
类型的指针。void*
:指向任何类型的指针(通用指针)。
3. 引用类型(Reference Types)
引用是变量的别名,可以直接操作原始数据。
int&
:指向int
类型的引用。
4. 数组类型(Array Types)
数组是固定大小的同类型数据集合。
int arr[10]
:包含 10 个int
类型元素的数组。
5. 结构体类型(Struct Types)
结构体用于组合不同类型的成员。
struct Person {
std::string name;
int age;
};
6. 类类型(Class Types)
类是 C++ 的面向对象编程基础,可以包含成员函数、构造函数、析构函数等。
class Person {
public:
std::string name;
int age;
};
7. 联合体类型(Union Types)
联合体允许多个不同类型的成员共享同一块内存。
union Data {
int i;
float f;
};
8. 枚举类型(Enum Types)
枚举类型用于定义一组命名的整数常量。
enum Day { Sunday, Monday, Tuesday };
9. 类型别名(Type Aliases)
类型别名用 typedef
或 using
为已有类型创建别名。
typedef unsigned long ulong;
using ulong = unsigned long;
10. 模板类型(Template Types)
模板允许定义通用的函数或类,支持不同的数据类型。
template <typename T>
T add(T a, T b) { return a + b; }
11. STL 类型(标准模板库类型)
C++ 标准库提供的容器类型和工具类型:
std::vector
:动态数组。std::list
:双向链表。std::map
:键值对集合。std::string
:字符串。std::pair
:一对值。
12. Lambda 表达式(Lambda Expressions)
Lambda 表达式是一种定义匿名函数的方法。
auto add = [](int a, int b) { return a + b; };
13. 智能指针类型(Smart Pointer Types)
智能指针用于自动管理动态内存。
std::unique_ptr
:独占所有权的智能指针。std::shared_ptr
:共享所有权的智能指针。std::weak_ptr
:观察指针,不影响引用计数。
14. 函数类型(Function Types)
C++ 允许定义函数指针类型,指向特定签名的函数。
int (*func_ptr)(int, int); // 指向返回值为 int,参数为两个 int 类型的函数指针
总结:
C++ 数据类型大致可以分为:
- 内置类型:整型、浮点型、字符型、布尔型、空类型。
- 复杂类型:指针类型、引用类型、数组类型、结构体类型、类类型、联合体类型、枚举类型。
- 其他类型:类型别名、模板类型、STL 类型、Lambda 表达式、智能指针、函数类型。
这些类型提供了丰富的选项,帮助程序员更好地管理和操作数据。