博客
关于我
C++ Primer 5th笔记(2)chapter 2变量和基本类型:变量声明、关键字
阅读量:60 次
发布时间:2019-02-26

本文共 1616 字,大约阅读时间需要 5 分钟。

0. 几个零星知识点

在编程过程中,了解一些基本的知识点能够帮助我们更高效地开发程序。以下是一些值得注意的内容:

  • 嵌套作用域:在嵌套作用域中,局部变量会遮盖全局变量。这意味着如果你在函数内部定义了一个变量,外部的全局变量将被这个局部变量覆盖。

  • char 的表示:在不同的编译器或平台上,char 可能是有符号的也可能是无符号的。因此,在跨平台开发时,需要特别注意这一点。

  • 标识符的大小写敏感性:C++ 是大小写敏感的语言。例如,变量名 BigIntbigint 是两个不同的变量。


  • 1. 变量声明和定义

    在 C++ 中,变量的声明和定义是分开的步骤。这种设计让我们能够在不同的文件中进行声明和定义,例如在头文件中进行声明,而在源文件中进行定义。

    • 声明extern int i; 这行代码的作用是声明一个名为 i 的整数变量,并指定其类型。声明只告诉编译器这个变量的存在,但并不分配内存或赋值。

    • 定义extern double pi = 3.45; 这行代码不仅声明了一个 double 类型的变量 pi,还为它分配了内存并赋值了初始值。

    需要注意的是,变量可以被多次声明,但只能被定义一次。如果一个变量在多个文件中被声明,那么这些声明必须一致,否则会导致编译错误。

    例如,shareVariable.h 文件中可能只声明了 int nShare,而在 useShareVariable1.huseShareVariable2.h 文件中,分别在不同的位置定义了 nShare 的值。这种方式可以在多个文件中共享同一个变量。


    2. C++ 关键字

    C++ 中有许多关键字用于实现特定的功能。以下是一些常见关键字及其用途:

    • decltype:用于指定一个变量的类型。它会根据变量的实际类型来推断类型信息。

    • asm:用于在汇编代码中使用 C++ 表达式。这通常用于优化性能或在特定情况下工作。

    • constexpr:用于在常数表达式中确保结果能够在编译时被计算出来。这对于性能敏感的代码非常有用。

    • const_cast:用于将一个表达式的结果转换为 const 类型。这种转换通常用于安全地从非常数变量转换为常数变量。

    • mutable:用于标记一个 const 成员函数的参数或成员变量,允许修改其值。这种情况非常少见,因为 const 意味着不可修改。

    • noexcept:用于标记函数或变量,表示它们不接受异常。这种机制可以防止异常在未被捕获的情况下传播。

    • thread_local:用于标记变量或函数,表示它们在多线程环境中仅在当前线程中存在。

    • static_cast:用于将一个表达式的结果转换为特定的类型。这种转换比 dynamic_cast 更安全,因为它不需要运行时类型信息。

    • static_assert:用于在编译时检查某个条件是否为真。如果条件为假,编译会失败。

    • reinterpret_cast:用于将一个表达式的值 reinterpret 为另一个类型。这种转换需要谨慎,因为它不会执行类型检查。

    • volatile:用于标记一个变量,表示它可能会被外部代码修改。这种情况下,C++ 会生成适当的加载和存储操作,确保内存一致性。


    3. C++ 操作符替代名

    C++ 提供了一些替代运算符的关键字,可以在特定情况下使用。这些关键字通常用于优化代码或满足特定的编译需求。

    以下是一些常见的替代运算符:

    • []:用于数组访问。
    • []:用于内联函数(inline function)的参数传递。
    • &:用于引用类型。
    • *:用于指针。
    • **:用于过载运算符。
    • <<:用于输出流操作符。
    • >>:用于输入流操作符。
    • +=-=*= 等:用于自增、自减和自乘操作。

    参考

    如果你对这些内容感兴趣,可以进一步查阅以下资料:

    • C++ 标准文档
    • 《C++ 程序设计语言》(The C++ Programming Language)

    转载地址:http://jbuz.baihongyu.com/

    你可能感兴趣的文章
    Pandas 读取具有浮点值的 csv 文件会导致奇怪的舍入和小数位数
    查看>>
    pandas 适用,但仅适用于满足条件的行
    查看>>
    Pandas-从具有嵌套列表列表的现有列创建动态列时出错
    查看>>
    Pandas-通过对列和索引的值求和来合并两个数据框
    查看>>
    pandas.read_csv()的详解-ChatGPT4o作答
    查看>>
    PANDAS.READ_EXCEL()输出‘;溢出错误:日期值超出范围‘;而不存在日期列
    查看>>
    Pandas数据可视化怎么做?用实战案例告诉你!
    查看>>
    Pandas数据结构之DataFrame常见操作
    查看>>
    pandas整合多份csv文件
    查看>>
    pandas某一列转数组list
    查看>>
    Pandas模块,我觉得掌握这些就够用了!
    查看>>
    Pandas玩转文本处理!
    查看>>
    SpringBoot 整合 Mybatis Plus 实现基本CRUD功能
    查看>>
    pandas的to_sql方法中使用if_exists=‘replace‘
    查看>>
    pandas读取parquet报错
    查看>>
    Pandas进阶大神!从0到100你只差这篇文章!
    查看>>
    spring5-介绍Spring框架
    查看>>
    Pandas:将一列与数据帧的所有其他列进行比较
    查看>>
    PANDA:基于多列对数据表的行运行计算,并将输出存储在新列中
    查看>>
    PandoraFMS 监控软件 SQL注入漏洞复现
    查看>>