📜  “静态常量”与“ #define”与“枚举”

📅  最后修改于: 2021-05-30 09:06:48             🧑  作者: Mango

在本文中,我们将分析“静态const”,“#define”和“枚举” 。这三个常常令人困惑,选择使用哪个有时可能是一项艰巨的任务。

静态常量

static const: “ static const”基本上是static(存储说明符)和const(类型限定符)的组合。

静态:确定变量的生存期和可见性/可访问性。这意味着,如果将变量声明为静态变量,则它将在程序运行时始终保留在内存中,而当函数(定义了变量的地方)结束时,普通或自动变量将被破坏。
常量:是类型限定符。类型限定符用于通过类型系统表达有关值的附加信息。当使用const类型限定符初始化变量时,它将不接受其值的进一步更改。
因此,将static和const结合使用,可以说,当使用static const初始化变量时,它将保留其值直到程序执行为止,并且也将不接受其值的任何更改。

句法:

static const data_type name_of_variable = initial_value;
// C++ program to demonstrate the use of
// static const
  
#include 
  
using namespace std;
// function to add constant value to input
int addConst(int input)
{
    // value = 5 will be stored in
    // memory even after the
    // execution of the
    // function is finished
    static const int value = 5;
  
    // constant_not_static will
    // not accept change in value
    // but it will get destroyed
    // after the execution of
    // function is complete
    const int constant_not_static = 13;
    input += value;
  
    // value++; ==> this statement will produce error
    return input;
}
  
int main()
{
    int input = 10;
    cout << addConst(input) << endl;
  
    return 0;
}
输出:
15

“ #define”是什么?

它经常被误解为编程语句。但这实际上是建立了一个。宏会导致文本在编译发生之前被替换。要了解有关宏的更多信息,请参阅macros_vs_function文章。

句法:

#define token [value]

注意:令牌不能有任何空格,值可以有空格。
例子:

#define ll long long int
// C++ program to demonstrate
// the use of #define
  
#include 
  
// defining long long int as => ll
#define ll long long int
  
// defining for loop
#define f(i, a, b, c) for (ll i = a; i < b; i += c)
using namespace std;
  
// function to count to a given number
void count(ll input)
{
    // loop implemented using macros
    // for(long long int j=1; j
输出:
1 2 3 4 5 6 7 8 9 10

什么是枚举?

枚举是用户定义的数据类型。它用于为整数常量分配名称,以提高代码的可读性。要使用枚举,在C / C++中使用“ enum”关键字。

句法:

enum flag{constant1= 2, constant2=3, constant3=4....};

使“枚举”与“ #define”不同的原因是它会自动将值分配给变量。在前面的示例中,如果未分配值=>

enum{constant1, constant2, constantd3...}

变量将被自动分配值(常数1 = 0,常数2 = 1,常数3 = 2…)。使用枚举而不是宏有很多优点。其中之一是自动分配值。

// C++ program to demonstrate
// the use of enum
  
#include 
  
using namespace std;
  
int main()
{
    // declaring weekdays data type
    enum weekdays { mon,
                    tues,
                    wed,
                    thurs,
                    fri,
                    sat,
                    sun };
    // a variable named day1 holds the value of wed
    enum weekdays day1 = wed;
  
    // mon holds 0, tue holds 1 and so on
    cout << "The value stored in wed is :" << day1 << endl;
  
    // looping through the values of
    // defined integral constants
    for (int i = mon; i <= sun; i++)
        cout << i << " ";
    cout << endl;
  
    return 0;
}
输出:
The value stored in wed is :2
0 1 2 3 4 5 6

有关枚举的更多信息,请参见C文章中的Enumeration(或enum)。

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”