static在c语言中的作用?static函数在c语言中的用法
一、c语言中static说明是什么意思
static用来说明静态变量。如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在当前c程序文件中使用,在另一个c代码里面,即使使用extern关键词也不能访问这个static变量。
扩展资料
c语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言编译器普遍存在于各种不同的操作系统中,例如MicrosoftWindows、macOS、Linux、Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
static(中文名:静态)来自高级计算机语言,像在VB,C#,C,C++,Java,PHP,Objective-C,JavaScript中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、PROLOG、Ada等语言中也是有出现的,只是有着不同的作用,对于其具体作用,读者有需要的时候是可以具体查阅的。
二、c语言中,用static声明的局部变量有存在的意义吗
static关键字的涵义有2个。
1,局部可见。
2,静态变量。
解释第一个,如果有在a.c文件中用static声明了全局变量x,在b.c中同样可以用static声明一个全局变量x,这里使用了static的局部可见性。用途很宽广,不列举了。
解释第二个,在函数中用static声明局部变量,此变量在静态区,必须初始化。auto型变量地址在栈区,函数中用完就被释放了。而static变量在你下次调用函数时依然保持在上次被更改的值。用在例如需要记录上一次值的地方。
比如有获取2次平均值函数
intgetAverage(intx){
staticintlastx=0;
intave;
ave=(x+lastx)/2;
lastx=x;/*在下次调用函数时,lastx保持x的值*/
returnave;
}
voidmain(){
intx=2;
inty;
y=getAverage(x);//y=1
x=10;
y=getAverage(x);//y=6
}
最后送你一只神兽
三、博途中static与temp区别
博途(TIAPortal)中的static和temp是两个不同的变量区域,它们之间的区别如下:
存储方式不同:static存储在静态数据区,temp存储在栈内存中。
生命周期不同:static变量在程序编译时就已经分配了内存空间,生命周期为整个程序运行期间;而temp变量在函数调用时才会分配内存空间,生命周期为该函数执行期间。
可见性不同:static变量在声明它的文件中可见,在其他文件中无法访问;而temp变量仅在所属函数中可见,超出函数范围后即被销毁,外部无法访问。
初始化方式不同:static变量可以自动初始化,也可以手动初始化;而temp变量必须在定义时进行初始化。
作用域不同:static变量通常用于需要长时间保存的数据,如全局计数器、全局缓存等;而temp变量通常用于一次性临时存储数据,如函数参数、局部计数器等。
综上所述,static和temp是博途中两个不同的变量区域,它们在存储方式、生命周期、可见性、初始化方式和作用域等方面存在明显差异。需要根据实际需求选择使用哪种变量类型。