大家好,今天小编关注到一个比较有意思的话题,就是关于c语言static 函数的问题,于是小编就整理了4个相关介绍c语言static 函数的解答,让我们一起看看吧。
static定义的函数,怎么使用?
在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。 用static声明的方法是静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员 比如类Cls1中定义了static sfunc(); 那么调用的时候用类名而不是对象名来调用方法:Cls1.sfunc();
C语言static可以用什么代替?
在C语言中,static关键字可以用其他方式来实现相同的功能。可以使用全局变量来替代静态变量,或者使用函数内的static变量来保持其作用域仅限于该函数。
此外,可以使用宏定义来替代静态常量,或者使用局部变量和指针来模拟静态数组的功能。
另外,也可以通过多文件编程来达到静态函数和静态全局变量的效果,将其声明为static并将其定义放在单独的源文件中,然后在需要的文件中引用。总之,虽然C语言中没有直接的替代方法,但是可以通过不同的方式来实现相同的功能。
最主要有两点用途。
1. 让一个变量长期有效,而不管其是在什么地方被申明。比如:
fun1()
{
static int s_value = 0;
....
}
那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(请注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。
2.避免多个文件使用了相同的变量名而导致冲突
static定义?
static的第一种含义:修饰全局变量时,表明一个全局变量只对定义在同一文件中的函数可见。
static的第二种含义:修饰局部变量时,表明该变量的值不会因为函数终止而丢失。
static的第三种含义:修饰函数时,表明该函数只在同一文件中调用。
static的第四种含义:修饰类的数据成员,表明对该类所有对象这个数据成员都只有一个实例。即该实例归 所有对象共有。
static的第五种含义:修饰类成员函数,用static修饰不访问非静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量。
问个问题,为什么我定义的static函数能被其他源文件调用?
不能被调用,static有以文件为单位隐藏名字的功能,同一文件指的是.cpp文件以及它所include的.***件,也就是说,你在一个头文件里定义了static的全局变量或者,被其他cpp文件包含了,被包含一次就相当于在不同的文件上定义了同名的static的变量或者函数,你所谓的可以调用的并不是你最初在那个文件上定义的static的变量或者函数了(你可以试下,不加static就会提示重定义不能通过编译了)
到此,以上就是小编对于c语言static 函数的问题就介绍到这了,希望介绍关于c语言static 函数的4点解答对大家有用。