博客
关于我
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/

    你可能感兴趣的文章
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim教程【十二】
    查看>>
    Nim游戏
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>
    nio 中channel和buffer的基本使用
    查看>>
    NIO三大组件基础知识
    查看>>
    NIO与零拷贝和AIO
    查看>>
    NIO同步网络编程
    查看>>
    NIO基于UDP协议的网络编程
    查看>>
    NIO笔记---上
    查看>>
    NIO蔚来 面试——IP地址你了解多少?
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    NISP国家信息安全水平考试,收藏这一篇就够了
    查看>>
    NIS服务器的配置过程
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NiuShop开源商城系统 SQL注入漏洞复现
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>