C++旧版课程库
C++第 2 期查看课程总览

058 常量

主要内容

1. 变量和常量


int dashima; // 这就是一个变量。
dashima = 5; // 变量可以赋值
变量的值,是可以被改变的。 在 C++ 中,有一些量,它们的值是不变化的。 举例:

// 数值常量
12
-5
3.14159
3.15f
true

2. 变量的作用域

每个变量都有作用域,变量的作用域决定了变量定义的生效范围,就如同法律条文一样,一般不同国家的法律条文仅作用于本国,变量仅生效于其作用域。函数内定义的变量的作用域为该函数内,全局变量的作用域为全局。不同函数内定义的变量被视为独立实体,当该函数执行完毕便释放变量所占用的内存空间,即便不同函数内定义的变量名称相同也不会相互影响。 全局变量定义示例:

#include < iostream >
using namespace std;
int a=20;
void Print()
{
    cout<<a<<endl;    
}
int main()
{
   Print();
    cout<<a<<endl;
}
局部变量定义示例:

#include < iostream >
using namespace std;
int a=20;
void Print()
{
    int b=30;
    cout<<b<<endl;  
    cout<<a<<endl;    
}
int main()
{
    Print();
    cout<<a;
    //cout<<b;
}
    

3. 定义“符号常量”

除此以外,我们还可以定义“符号常量”

// 符号常量
const int dashima = 5; // 在这里可以理解为初始化。
const int dashi(500);
const double b(10);
const float  c=10; 
const bool   d=true; 
const char   e='A'; 
// 不可以赋值
dashima = 80;          // 编译器会报错。常量不允许被修改。
  • 注意关键字:const
  • 4. 使用场景

    常量的重点在于“不变”。所以,一般我们经常将以下的量设置为常量。 示例程序:
    
    #include < iostream >
    using namespace std;
    const double PI = 3.1415926;
    
    int main()
    {
        cout 
            << "圆的面积为:"
            << 5*5*PI;
    
        return 0;
    }
    

    5. #define

    除了使用 const 来定义常量以外,C++ 语法也支持使用 #define 来定义常量。 但是! 这是比较古老的写法。现代程序开发标准中,大多数情况下,我们都不推荐继续使用 #define 不过,了解这种写法,也是非常必要的。 示例程序:
    
    #include < iostream >
    using namespace std;
    #define PI 3.1415926;    // 使用 #define 定义常量
    
    int main()
    {
        cout 
            << "圆的面积为:"
            << 5*5*PI;
    
        return 0;
    }
    
    #define 一般称为“宏定义”,写在 main 以外。 什么是“宏”呢? “宏”是计算机科学中创造的概念。表示:一系列人为定义的指令。 它的作用其实就是“相同词替换”,怎么理解呢? 比如上述的示例程序中,程序员写的代码是这样的:
    
    #define PI 3.1415926;
    cout << "圆的面积为:" << 5*5*PI;
    
    在提交代码给编译器之前,计算机会对代码做一下修改:
    
    #define PI 3.1415926;
    cout << "圆的面积为:" << 5*5*3.1415926;   // 所以有代码中的 PI ,都被替换成了 3.1415926。然后才提交给编译器。
    

    习题

    课后练习