侧边栏壁纸
博主头像
lac博主等级

行动起来,活在当下

  • 累计撰写 66 篇文章
  • 累计创建 12 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

速学C++,第三天

Hude
2023-04-04 / 0 评论 / 0 点赞 / 15 阅读 / 3734 字

C++速学,第三天

修饰符类型

  1. C++允许再char、int和double数据类型前放置修饰符

  2. 修饰符类型:

  • signed:表示变量可以存储负数。对于整型变量来说,signed 可以省略,因为整型变量默认为有符号类型。

  • unsigned:表示变量不能存储负数。对于整型变量来说,unsigned 可以将变量范围扩大一倍。

  • short:表示变量的范围比 int 更小。short int 可以缩写为 short。

  • long:表示变量的范围比 int 更大。long int 可以缩写为 long。

  • long long:表示变量的范围比 long 更大。C++11 中新增的数据类型修饰符。

  • float:表示单精度浮点数。

  • double:表示双精度浮点数。

  • bool:表示布尔类型,只有 true 和 false 两个值。

  • char:表示字符类型。

  • wchar_t:表示宽字符类型,可以存储 Unicode 字符。

3.重点记忆

  • 修饰符signed、unsigned、long 和 short 可应用于整型

  • 修饰符signed、unsigned可用于字符型

  • long可用于双精度型

  • 修饰符可以组合使用

  • 速记符号(不写int)来声明无符号短整数或无符号长整数

类型限定符(与js中const、let、var类似,与ts中static、private、protect类似)

限定符

含义

与js/ts对比

const

const 定义常量,表示该变量的值不能被修改

基本与JavaScript一致

volatile

修饰符 volatile 告诉该变量的值可能会被程序以外的因素改变,如硬件或其他线程。。

restrict

restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。

mutable

表示类中的成员变量可以在 const 成员函数中被修改。

有点类似于ts的成员变量,不过不一致

static

用于定义静态变量,表示该变量的作用域仅限于当前文件或当前函数内,不会被其他文件或函数访问。

与ts类相关概念中的static修饰符类似

register

用于定义寄存器变量,表示该变量被频繁使用,可以存储在CPU的寄存器中,以提高程序的运行效率。

存储类

  1. 存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前

  2. 可用的存储类:

  • auto:

    (1)C++98:用于自动变量的声明(C++17已删除)

    (2)C++11:声明变量时根据初始化值自动推断类型;声明函数时,返回函数的占位符

  • register:

    (1)用于定义存储在寄存器中,而不是RAM的局部变量

    (2)变量最大尺寸要等于寄存器尺寸

    (3)不能使用一元运算符&

    (4)仅代表可能存储在寄存器中,不是绝对

  • static

    (1)指示编译器在程序生命周期内保持局部变量的存在

    (2)修饰局部变量时,可以在函数调用之间保持局部变量的值

    (3)修饰全局变量时,会是变量的作用域限制在他的文件内

    (4)当 static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享

  • extern:

    (1)提供一个全局变量的引用,全局变量对所有文件是可见的

    (2)对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置、

    (3)实际是用来在另一个文件中声明一个全局变量或函数

  • mutable:

    (1)允许对象的成员替代常量。也就是说,mutable 成员可以通过 const 成员函数修改

  • thread_local (C++11)

    (1)仅可以在它的线程上创建和访问,变量在创建线程时创建,并在销毁线程时销毁。 每个线程都有其自己的变量副本。

    (2)thread_local 说明符可以与 static 或 extern 合并

    (3)可以将 thread_local 仅应用于数据声明和定义,thread_local 不能用于函数声明或定义。

0

评论区