关于static编程基础知识
在编程中,我们经常会遇到static这个关键字。它可以用于变量、函数、类等。下面我们来探讨一下它的基础知识。
1.变量的static
在函数内部定义的变量是局部变量,作用域仅限于该函数内部。但当局部变量前加上static关键字时,该变量变成了静态局部变量。静态局部变量的生命周期会延长到整个程序运行的过程中,并且初始值为0。而一般的局部变量是会在函数结束后自动销毁的。
例如:
void func()
{
int i = 0; // 普通局部变量
static int j = 0; // 静态局部变量
i++;
j++;
printf("i = %d, j = %d\n", i, j);
return;
}
int main()
{
func();
func();
func();
return 0;
}
程序输出:
i = 1, j = 1
i = 1, j = 2
i = 1, j = 3
可以看到,每一次调用func函数时,i都被初始化为0,而j的值则是在之前的基础上累加的。
2.函数的static
在函数内部可以定义一个static函数,与普通函数不同的是,static函数只能被本文件内的其他函数所调用,对于其他文件而言是“隐藏”的。如果想要将一个函数定义为仅当前文件可使用,可以使用static关键字修饰。
例如:
static int func(int a, int b)
{
return a + b;
}
int main()
{
int sum = func(3, 5); // 这里可以调用func函数
return 0;
}
3.类的static
在类中定义一个static成员变量时,该变量属于整个类而不是某个对象,即使没有实例化对象也可以访问该变量。同时,为了方便访问,static成员变量必须在类外进行初始化。而且,也可以在类中定义static成员函数。
例如:
class MyStaticClass {
public:
static int num;
static void print() {
printf("num = %d\n", num);
}
};
int MyStaticClass::num = 3;
int main()
{
MyStaticClass::print(); // 输出“num = 3”
return 0;
}
本例中,num是一个类的静态成员变量,可以被类的任何实例化对象所使用,而print是一个静态成员函数,在不实例化类对象的情况下也可以直接调用。
总结
以上就是关于static的基础知识了。使用到静态变量、静态函数和静态成员变量,可以在编程中更加灵活地运用各种方法实现需求。
友情提示:抵制不良游戏,拒绝盗版游戏。 注意自我保护,谨防受骗上当。 适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用!
发表评论 取消回复