您现在的位置是:首页 > 科技 >正文

今日static函数功能(static函数)

发布时间:2022-06-20 13:36:18单于宗宇来源:

导读 大家好,小良来为大家解答以上问题。static函数功能,static函数很多人还不知道,现在让我们一起来看看吧!静态定义了变量的使用:I .静...

大家好,小良来为大家解答以上问题。static函数功能,static函数很多人还不知道,现在让我们一起来看看吧!

静态定义了变量的使用:

I .静态局部变量:

1.Static类的内部变量和auto自动变量(即没有静态声明的局部变量)一样,都是特定函数的局部变量,即变量只能在定义该变量的函数中使用,两个变量的作用域是一样的;两者的区别在于:auto自动变量会随着函数被调用和退出而存在和消失,而静态局部变量不会,无论其所在的函数被调用与否,它们都会一直存在;然而,虽然变量仍然存在,但它不能被使用。如果再次调用定义它的函数,可以继续使用,保存上次调用后留下的值。换句话说,静态类型的内部变量是一个只能在特定函数中使用,但总是占用存储空间的变量。

2.如果静态变量在函数体中定义的同时被初始化,程序以后就不会被初始化了(函数中出现的静态变量初始化语句的基本类型只会在第一次调用时执行)。但是自动变量的初始值是在调用函数的时候赋值的,每次调用函数都要重新给初始值,相当于执行一个赋值语句。

3.静态局部变量的初始化表达式必须是常量或常量表达式。即使局部静态变量定义时没有初始值,系统也会自动赋一个初始值0(对于数值型变量)或空字符(对于字符型变量);静态变量的初始值是0。对于自动变量auto,如果不赋初值,它的值将是一个不确定值。

4.当一个函数被多次调用,并且需要在调用之间保留一些变量的值时,可以考虑静态局部变量。虽然全局变量也可以达到上述目的,但全局变量有时会产生意想不到的副作用,所以最好使用局部静态变量。

注意:局部静态变量占用内存时间长,可读性差,所以除非必要,尽量避免使用局部静态变量。

第二,静态全局变量

全局变量(外部变量)的描述前面是static,构成静态全局变量。

全局变量本身就是静态存储方法,静态全局变量也是静态存储方法。

两者在存储方式上没有区别。

虽然两者的区别在于:

1.非静态全局变量的范围是整个源程序。当一个源程序包含多个源文件时,非静态全局变量在每个源文件中都是有效的。

2.静态全局变量限制了它的作用域,即它只在定义该变量的源文件中有效,不能在同一源程序的其他源文件中使用。

因为静态全局变量的范围被限制在一个源文件中,它们只能被那个源文件中的函数共享,所以它可以避免在其他源文件中引起错误。

从上面的分析可以看出

将局部变量更改为静态变量会改变它的存储模式,也就是它的生存期。

把全局变量改成静态变量,改变了它的作用域,限制了它的使用范围。

因此,静态说明符的作用在不同的地方是不同的。要注意。

静态定义了变量的使用:

I .静态局部变量:

1.Static类的内部变量和auto自动变量(即没有静态声明的局部变量)一样,都是特定函数的局部变量,即变量只能在定义该变量的函数中使用,两个变量的作用域是一样的;两者的区别在于:auto自动变量会随着函数被调用和退出而存在和消失,而静态局部变量不会,无论其所在的函数被调用与否,它们都会一直存在;然而,虽然变量仍然存在,但它不能被使用。如果再次调用定义它的函数,可以继续使用,保存上次调用后留下的值。换句话说,静态类型的内部变量是一个只能在特定函数中使用,但总是占用存储空间的变量。

2.如果静态变量在函数体中定义的同时被初始化,程序以后就不会被初始化了(函数中出现的静态变量初始化语句的基本类型只会在第一次调用时执行)。但是自动变量的初始值是在调用函数的时候赋值的,每次调用函数都要重新给初始值,相当于执行一个赋值语句。

3.静态局部变量的初始化表达式必须是常量或常量表达式。即使局部静态变量定义时没有初始值,系统也会自动赋一个初始值0(对于数值型变量)或空字符(对于字符型变量);静态变量的初始值是0。对于自动变量auto,如果不赋初值,它的值将是一个不确定值。

4.当一个函数被多次调用,并且需要在调用之间保留一些变量的值时,可以考虑静态局部变量。虽然全局变量也可以达到上述目的,但全局变量有时会产生意想不到的副作用,所以最好使用局部静态变量。

注意:局部静态变量占用内存时间长,可读性差,所以除非必要,尽量避免使用局部静态变量。

第二,静态全局变量

全局变量(外部变量)的描述前面是static,构成静态全局变量。

全局变量本身就是静态存储方法,静态全局变量也是静态存储方法。

两者在存储方式上没有区别。

虽然两者的区别在于:

1.非静态全局变量的范围是整个源程序。当一个源程序包含多个源文件时,非静态全局变量在每个源文件中都是有效的。

2.静态全局变量限制了它的作用域,即它只在定义该变量的源文件中有效,不能在同一源程序的其他源文件中使用。

因为静态全局变量的范围被限制在一个源文件中,它们只能被那个源文件中的函数共享,所以它可以避免在其他源文件中引起错误。

将局部变量更改为静态变量会改变它的存储模式,也就是它的生存期。

把全局变量改成静态变量,改变了它的作用域,限制了它的使用范围。

因此,静态说明符的作用在不同的地方是不同的。要注意。

本文到此结束,希望对大家有所帮助。

标签:

上一篇
下一篇