21xrx.com
2024-12-23 02:51:03 Monday
登录
文章检索 我的文章 写文章
C++中局部静态变量、全局变量和全局静态变量的详解
2023-07-05 02:38:05 深夜i     --     --
C++中的变量类型 局部静态变量 全局变量 全局静态变量 变量的作用域

C++中的变量分为局部变量和全局变量。局部变量是在函数中定义的变量,在函数执行过程中一直存在,执行完后就被销毁。全局变量是在函数外定义的变量,它的作用域从定义处开始一直到程序结束。

除了局部变量和全局变量之外,C++ 还支持局部静态变量和全局静态变量。局部静态变量是指在函数内部定义,但是只在第一次调用时初始化,之后每次调用都使用上一次的值。而全局静态变量是在全局作用域中定义的静态变量,其生命周期与全局变量相同,但只能在定义它的文件内访问。

关于局部静态变量,我们可以看以下示例:


#include <iostream>

void increment() {

  static int i = 0; // 局部静态变量

  i++;

  std::cout << i << std::endl;

}

int main() {

  increment(); // 输出 1

  increment(); // 输出 2

  increment(); // 输出 3

  return 0;

}

在这个示例中,局部静态变量每次调用都会被保留,直到程序结束。因此,在第一次调用 `increment()` 时,变量 i 的值被初始化为 0,并且在每次调用时增加 1。

全局变量是在程序的任何位置定义的变量,并且可以在任何位置访问,但在不同文件中定义相同名称的全局变量会导致链接错误。

而全局静态变量只能在定义它的文件中访问。我们可以看以下示例:


#include <iostream>

static int i = 0; // 全局静态变量

void increment() {

  i++;

  std::cout << i << std::endl;

}

int main() {

  increment(); // 输出 1

  increment(); // 输出 2

  increment(); // 输出 3

  return 0;

}

在这个示例中,我们在程序的开头定义了全局静态变量 i,并在函数 increment() 中使用它。由于 i 是一个全局静态变量,我们可以在函数中使用它,并且在整个程序中都可以访问它。

总之,局部静态变量、全局变量和全局静态变量都有其独到的用处。程序员应该根据需要选择最合适的变量类型来实现其程序。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复