21xrx.com
2024-11-08 21:20:18 Friday
登录
文章检索 我的文章 写文章
C++中的静态变量
2023-06-25 21:58:14 深夜i     --     --
静态变量 C++ 作用域 限定符

C++语言中的静态变量,是指在函数内部或类内部使用static关键字定义的变量。与普通变量不同的是,静态变量不会随着函数的退出而被销毁,也可以说静态变量存储在全局数据区或静态数据区中。当程序加载时,静态变量就已经被创建并分配了内存空间,不管函数被调用多少次,静态变量的地址和值都不会改变。

在函数内部定义的静态变量,可以实现对变量的记忆功能,也就是说,这个变量的值在下一次进入函数时仍然保持不变。例如:


#include <iostream>

void foo() {

  static int count = 0;

  count++;

  std::cout << "Count = " << count << std::endl;  

}

int main() {

  foo(); // Count = 1

  foo(); // Count = 2

  foo(); // Count = 3

  return 0;

}

在上面的例子中,foo函数内部定义了一个静态变量count,每次调用函数,count的值都会加1。由于count是静态变量,其存储空间在程序运行期一直存在,所以这个计数器可以在多次调用函数时保持不变。

在类内部定义的静态变量,可以实现全局变量的功能,并且它是所有该类对象所共享的。例如:


#include <iostream>

class Foo {

public:

  static int count;

  Foo() {

    count++;

  }

};

int Foo::count = 0;

int main() f2

在上面的例子中,定义了一个类Foo,其中有一个静态变量count。在类外部需要对count进行定义,因为静态变量必须在类外部进行内存分配。在类内部,通过Foo::count来访问这个静态变量。在main函数中创建了三个Foo对象,每次创建对象,count都会加1。由于count是静态变量,它被所有Foo对象所共享,所以最后输出的count的值为3。

总的来说,静态变量是一种非常有用的变量类型,在函数内部可以实现变量记忆功能,在类内部可以实现全局变量的功能。需要注意的是,静态变量的生命周期比较特殊,需要在程序加载时分配内存,而且它的值在程序运行期间不会改变,所以在使用时需要格外小心。

  
  

评论区

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