static在c语言中是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static在c语言中是啥意思相关的知识,希望对你有一定的参考价值。
1、修饰变量
变量分为局部和全局变量,但是都存于内存的静态区。静态全局变量的作用域仅局限于变量被定义的文件中,其他文件即使使用extern也没法使用,其范围准确的说是从定义之初开始,到文件结尾处结束。在其前面定义的代码行也不能使用。
静态局部变量,在函数体里面定义的,就只能在这个函数里用了,同一个文档中的其他函数也用不了。由于被static 修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值还是不会被销毁,函数下次使用时仍然能用到这个值。
2、修饰函数
函数前加static 使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。
关键字static 有着不寻常的历史。起初,在C 中引入关键字static 是为了表示退出一个块后仍然存在的局部变量。随后,static 在C 中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用static 关键字来表示这第二种含义。
参考技术A写在局部变量前面表示变量是静态变量,函数调用结束后变量不回收。
写在全局变量前面,表示静态全局变量,该变量只能在本文件中访问,不可以被其余地方extern。
static 出现在不同的地方含义不同的。
如果是在函数之外使用,表示该对像在此文件中是全局可访问的,在文件之外是不可访问的。
如果出现在函数内部,则表示该变量不是自动变量,它是一个可以初始化的变量(如果不进行显式初始化,默认值是0)。改变了它的值以后,函数结束时它的值也会保留。
扩展资料:
static int n; //定义静态全局变量改为int n; //定义全局变量
再次编译运行程序,细心体会全局变量和静态全局变量的区别。
全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。
全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。
参考资料来源:百度百科-static
参考技术B 是静态存储类型的意思,用static声明的变量在函数调用结束后依然存在,也就是在整个程序中都能用这个变量。如 static int a;
这个a就是静态存储变量。本回答被提问者采纳 参考技术C 写在局部变量前面表示变量是静态变量,函数调用结束后变量不回收。
写在全局变量前面,表示静态全局变量,该变量只能在本文件中访问,不可以被其余地方extern 参考技术D 数据的储存类型,static就是静态储存类型
buffer 在c语言中是啥?
参考技术A buffer就是缓冲区的意思为什么一般C程序中都不定义他直接拿来用呢?
这个不可能,C语言有着严格的语法。不定义不能拿过来直接用。肯定是在别的地方定义的,如头文件,或者是个全局变量等。一般在编译器里面,右键这个变量,选go
to
difination(就是转到定义)就可以看到它在哪定义的了。
它一般用来定义数组,因为它本身的意思就是“缓冲区”,在C语言里,数组就是个缓冲区,所以用常常用它。
用它没有别的意思,就是方便记,你可以用shuzu
mydata甚至你自己名字的拼音都行,主要是用它别人也很容易懂这个变量是搞啥的。
以上是关于static在c语言中是啥意思的主要内容,如果未能解决你的问题,请参考以下文章