C++中所有数据类型

发布于:2025-06-20 ⋅ 阅读:(13) ⋅ 点赞:(0)

在C++中,数据类型可以分为几大类,包括基本数据类型、复合数据类型和用户自定义数据类型。以下是对C++中常见数据类型的详细分类和说明:

1. 基本数据类型

基本数据类型是C++语言预定义的类型,用于表示简单的数据值。它们是C++中最基本的构建块。

1.1 整数类型
  • int:用于表示整数。通常占用4字节(32位)。

  • short:短整型,通常占用2字节。

  • long:长整型,通常占用4字节或8字节(取决于平台)。

  • long long:扩展的长整型,通常占用8字节。

  • unsigned:无符号整型,表示非负整数。可以与intshortlonglong long结合使用,例如unsigned int

  • signed:有符号整型,默认情况下intshortlonglong long都是有符号的。

.12 浮点类型
  • float:单精度浮点数,通常占用4字节。

  • double:双精度浮点数,通常占用8字节。

  • long double:扩展精度浮点数,占用长度取决于平台,通常是12字节或16字节。

1.3 字符类型
  • char:用于表示字符,通常占用1字节。可以存储ASCII字符。

  • wchar_t:宽字符类型,用于存储宽字符(如Unicode字符),通常占用2字节或4字节。

  • char16_t:16位字符类型,用于存储UTF-16编码的字符。

  • char32_t:32位字符类型,用于存储UTF-32编码的字符。

1.4 布尔类型
  • bool:用于表示布尔值,通常占用1字节。值为truefalse

1.5 空类型
  • void:表示无类型,通常用于函数返回值或指针类型,表示“无”。

2. 复合数据类型

复合数据类型是由基本数据类型组合而成的复杂数据结构。

2.1 数组
  • 数组是一组相同类型的元素的集合,通过索引访问每个元素。例如:

    cpp

    复制

    int arr[5]; // 一个包含5个整数的数组
2.2 结构体(struct
  • 结构体是一种用户定义的数据类型,可以包含多个不同类型的成员变量。例如:

    cpp

    复制

    struct Person {
        string name;
        int age;
    };
2.3 联合体(union
  • 联合体是一种特殊的数据类型,可以存储多个不同类型的成员变量,但同一时间只能存储其中一个。所有成员共享同一块内存。例如:

    cpp

    复制

    union Data {
        int i;
        float f;
    };
2.4 枚举(enum
  • 枚举是一种用户定义的类型,用于定义一组命名的整数值。例如:

    cpp

    复制

    enum Color { RED, GREEN, BLUE };
2.5 类(class
  • 类是一种用户定义的数据类型,可以包含成员变量和成员函数。类是面向对象编程的核心。例如:

    cpp

    复制

    class Student {
    public:
        string name;
        int age;
        void display() {
            cout << name << " is " << age << " years old." << endl;
        }
    };

3. 指针和引用

  • 指针(pointer:指针是一个变量,用于存储另一个变量的内存地址。例如:

    cpp

    复制

    int* ptr; // 一个指向整数的指针
  • 引用(reference:引用是一个变量的别名,用于为变量提供另一个名称。例如:

    cpp

    复制

    int a = 10;
    int& ref = a; // ref是a的引用

4. 用户自定义数据类型

用户可以通过typedefusing关键字定义自己的数据类型。

4.1 typedef
  • typedef用于为现有类型定义一个新的名称。例如:

    cpp

    复制

    typedef int Integer;
    Integer a = 10; // 等同于 int a = 10;
4.2 using
  • using是C++11引入的语法,用于定义别名。例如:

    cpp

    复制

    using Integer = int;
    Integer a = 10; // 等同于 int a = 10;

5. 其他数据类型

  • auto:C++11引入的关键字,用于自动推导变量的类型。例如:

    cpp

    复制

    auto x = 10; // x的类型为int
    auto y = 3.14; // y的类型为double
  • decltype:C++11引入的关键字,用于获取表达式的类型。例如:

    cpp

    复制

    int a = 10;
    decltype(a) b = 20; // b的类型为int

6. 特殊数据类型

  • nullptr:C++11引入的空指针常量,用于替代NULL。例如:

    cpp

    复制

    int* ptr = nullptr;
  • std::nullptr_tnullptr的类型,用于表示空指针类型。

这些是C++中常见的数据类型。每种数据类型都有其特定的用途和特点,合理使用它们可以帮助你更好地编写高效、可读性强的代码。


以下是我整理的表格:

表格

复制

类别 数据类型 描述 典型用途 大小(字节)
基本数据类型 int 有符号整数类型,用于表示整数。 一般整数运算 通常为4字节(32位)
short 有符号短整数类型,用于表示较小的整数。 存储较小的整数,节省内存 通常为2字节
long 有符号长整数类型,用于表示较大的整数。 存储较大的整数 通常为4字节或8字节(平台相关)
long long 有符号扩展长整数类型,用于表示非常大的整数。 存储非常大的整数 通常为8字节
unsigned int 无符号整数类型,用于表示非负整数。 存储非负整数,范围比有符号整数大 通常为4字节
float 单精度浮点数类型,用于表示小数。 一般浮点运算 通常为4字节
double 双精度浮点数类型,用于表示更精确的小数。 需要更高精度的浮点运算 通常为8字节
long double 扩展精度浮点数类型,用于表示更高精度的小数。 需要极高精度的浮点运算 通常为12字节或16字节(平台相关)
char 字符类型,用于表示单个字符。 存储ASCII字符 通常为1字节
wchar_t 宽字符类型,用于表示宽字符(如Unicode)。 存储宽字符 通常为2字节或4字节(平台相关)
char16_t 16位字符类型,用于表示UTF-16编码的字符。 存储UTF-16字符 2字节
char32_t 32位字符类型,用于表示UTF-32编码的字符。 存储UTF-32字符 4字节
bool 布尔类型,用于表示逻辑值。 存储truefalse 通常为1字节
void 空类型,表示无类型。 函数返回值或指针类型,表示“无” 无大小
复合数据类型 数组 一组相同类型的元素集合。 存储多个相同类型的数据,通过索引访问 根据数组大小和元素类型大小计算
结构体(struct 用户定义的数据类型,包含多个不同类型的成员变量。 存储相关数据集合 根据成员变量大小计算
联合体(union 特殊数据类型,可以存储多个不同类型的成员变量,但同一时间只能存储其中一个。 存储多个变量,节省内存,但只能使用其中一个 根据最大成员变量大小计算
枚举(enum 用户定义的类型,用于定义一组命名的整数值。 定义一组相关的常量 通常为4字节(与int相同)
类(class 用户定义的数据类型,包含成员变量和成员函数。 面向对象编程,封装数据和行为 根据成员变量大小计算
指针和引用 指针(pointer 用于存储另一个变量的内存地址。 动态内存管理、函数参数传递等 通常为4字节或8字节(平台相关)
引用(reference 为变量提供别名。 函数参数传递、避免拷贝 与引用的变量占用相同大小的内存
用户自定义 typedef 为现有类型定义一个新的名称。 简化类型名称 无大小
using 为现有类型定义一个新的名称(C++11)。 简化类型名称 无大小
其他类型 auto 自动推导变量的类型(C++11)。 自动推导变量类型 根据推导的类型大小计算
decltype 获取表达式的类型(C++11)。 获取表达式的类型 根据表达式的类型大小计算
nullptr 空指针常量(C++11)。 表示空指针 通常为4字节或8字节(平台相关)
std::nullptr_t nullptr的类型。 表示空指针类型 通常为4字节或8字节(平台相关)

说明


网站公告

今日签到

点亮在社区的每一天
去签到