这里是详细讲解“一篇文章带你了解C++ static的作用,全局变量和局部变量的区别”的完整攻略。
1. 介绍
首先我们需要理解C++中的静态变量和全局变量以及它们与局部变量的区别。在程序开发中,正确地使用这些变量是很重要的。
- 全局变量:定义在函数外部,可以被程序中的所有函数使用。
- 静态局部变量:生存期是整个程序,但作用域是局部的。只在第一次进入该函数时初始化一次,以后函数再被调用,不再初始化。
- 普通局部变量:定义在函数内部的变量,作用域只在该函数内。
在C++中,static关键字可以用于静态变量、静态函数和静态成员变量。下面将重点介绍static关键字在变量声明中的用法和意义。
2. 静态变量
静态变量是指在函数中声明的变量,使用static关键字,具有以下特点:
- 它的生命周期与程序一致,只有在进程结束时该变量才会被销毁。
- 它只会被初始化一次,即使函数被多次调用,静态变量的值也不会丢失。
- 它的作用域只存在于声明它的函数内部。
以下是一个示例,展示了静态变量的用法:
#include <iostream>
void demo()
{
static int j = 0; // 静态局部变量
int i = 0; // 普通局部变量
j++;
i++;
std::cout << "静态局部变量j的值为: " << j << std::endl;
std::cout << "普通局部变量i的值为: " << i << std::endl;
}
int main()
{
std::cout << "第一次调用函数demo:" << std::endl;
demo();
std::cout << "第二次调用函数demo:" << std::endl;
demo();
return 0;
}
输出:
第一次调用函数demo:
静态局部变量j的值为: 1
普通局部变量i的值为: 1
第二次调用函数demo:
静态局部变量j的值为: 2
普通局部变量i的值为: 1
可以看到,静态变量j只被初始化一次,每次调用函数demo时j的值都被保存了下来;而i的值在每次函数调用结束时都会被清除。
3. 全局变量
全局变量的生命周期从程序开始一直到程序结束,所有函数中都可以访问它们,但如果某个函数中有与全局变量同名的局部变量时,局部变量将会屏蔽全局变量,此时只能访问到局部变量。
以下是一个示例,展示了全局变量的用法:
#include <iostream>
int global_variable1 = 1; //全局变量
void demo(){
int global_variable1 = 2; //局部变量,屏蔽了全局变量global_variable1
int global_variable2 = 3; //局部变量,与全局变量global_variable2没有关系
std::cout << "全局变量global_variable1的值为:" << ::global_variable1 << std::endl;
std::cout << "局部变量global_variable1的值为:" << global_variable1 << std::endl;
std::cout << "局部变量global_variable2的值为:" << global_variable2 << std::endl;
}
int global_variable2 = 4; //全局变量
int main(){
demo();
std::cout << "全局变量global_variable2的值为:" << global_variable2 << std::endl;
return 0;
}
输出:
全局变量global_variable1的值为:1
局部变量global_variable1的值为:2
局部变量global_variable2的值为:3
全局变量global_variable2的值为:4
4. 总结
该攻略主要介绍了静态变量和全局变量的概念、用法和特点。在程序设计中,根据需求合理地使用这两种变量,可以提高程序的效率和灵活性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你了解C++ static的作用,全局变量和局部变量的区别 - Python技术站