c语言定义static变量
Ⅰ c语言中由Static 定义的变量的作用范围
static有两个用途:1.在函数中用来定义变量时,使这个变量变为一个静太分配的变量,也即函数调用结束后该变量仍然存在,并且他只会初始化一次,且这个初始化是在编译阶段完成的.
2.在函数外用来定义变量时他会使得这个变量只在该文件中可见,也即其他文件是无法访问的,哪怕加了extern!
Ⅱ C语言static定义变量是软件不执行吗,在keil里有一行static执行时候直接都是跳过那又有
在 C 语言中,使用关键字 static 定义的变量是静态变量,具有以下几个特点:
静态变量在程序执行过程中不会被自动销毁,除非手动释放。
静态变量的作用域只限于在其声明的文件内。
静态变量的初始化只会在程序的第一次执行时进行,之后就不会再进行初始化。
所以,当你在使用 Keil 软件编译并执行一个 C 程序时,如果你遇到了一行 static 变量的定义,那么该变量就已经被初始化过了,在程序执行过程中不会再进行初始化,所以软件就会跳过这一行。
如果你希望在程序执行过程中对静态变量进行重新初始化,可以使用关键字 extern 定义该变量,并在其他文件中使用 static 关键字重新定义该变量,这样就可以在程序的不同执行过程中对该变量进行重新初始化了。
Ⅲ static在c语言中是什么意思
static在c语言中是“静态”的意思,用于在函数中声明“静态变量”用,在每一次调用后,该变量并不在函数返回时立即释放,变量中保存的值,可以保留到下一次调用时继续有效。
Ⅳ c语言中static说明是什么意思
在C语言中,static关键字的作用如下:
1、在修饰变量的时,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。
2、static修饰全局变量的时,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。
3、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。
(4)c语言定义static变量扩展阅读:
static关键字在C语言、C++、java中的作用有着相似之处,但也存在差异:
一、C++的static用法:
1、面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。
2、在类中,static可以用来修饰静态数据成员和静态成员方法
静态数据成员
(1)静态数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员,它在内存中只占一份空间,如果改变它的值,则各对象中这个数据成员的值都被改变。
(2)静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间。
(3)静态数据成员既可以通过对象名引用,也可以通过类名引用。
静态成员函数
(1)静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。
(2)非静态成员函数有this指针,而静态成员函数没有this指针。
(3)静态成员函数主要用来方位静态数据成员而不能访问非静态成员。
二、java的static用法:
1、声明为static的变量称为静态变量或类变量。可以直接通过类名引用静态变量,也可以通过实例名来引用静态变量,但最好采用前者,因为后者容易混淆静态变量和一般变量。
2、声明为static的方法称为静态方法或类方法。静态方法可以直接调用静态方法,访问静态变量,但是不能直接访问实例变量和实例方法。静态方法中不能使用this关键字,因为静态方法不属于任何一个实例。
参考资料来源:网络-static(计算机高级语言)
Ⅳ C语言static定义静态变量,不太懂,请解释一下
static c = 3; 只初始化一次,后面再使用c就是用上次f()返回后c的结果
所以当i=0时,f()中a=2,c初始化为3,c=c+1后c=4,返回a+c=4+2=6。返回后c保持为4
当i=1时,f()中a=2,c初始值为上次返回后的结果4,从而c=c+1=5,函数返回a+c=2+5=7。返回后c保持为5。当i=2时类似
Ⅵ C语言中的静态变量
其实是这样的。静态变量在内存中存储的位置,与全局变量是同一个区域。
所以,在编译期间,它的存储和大小就已经确定了,也就是已经分配了空间了。
而在c语言中,“分配内存”往往看做是变量被定义的一个标志。
所以,你在运行程序的时候,由于静态变量已经分配过内存了,不会再次进行分配了,它的定义语句就不会再次被执行了。
Ⅶ C语言中static修饰变量
可以,static在C语言中是表示一个变量为静态变量的,而不是常量,也不是不可变的变量。所谓的静态变量有两种情况,一种是静态全局变量,一种是静态局部变量。
先说静态局部变量:通常情况下,在一个函数中定义一个变量,那么函数退出之后,这个变量就消失了,即使你第二次调用这个函数,里面的变量也会被重新赋初值。比如我们写一个函数:
int fun(int a)
{int sum;
sum=sum+a;
return sum;}
这样无论你是第几次调用fun这个函数,sum都会重新被赋初值,也就是函数的返回值一直会是a;而不会出现多次调用累加的情况。
但如果你在一个函数中,用static来声明变量,那么这个变量虽然在函数外部不可用,但退出函数时,这个变量是不会消失的,下一次再调用这个函数,里面的值仍然存在。就说上面这个函数,如果你的第一句写成static int sum;那么你第一次调用fun(3);函数返回3,第二次再调用fun(5);函数返回值是8,因为第一次调用之后的sum=3的值不会消失。
另一种是静态全局变量。因为是全局变量,不存在退出函数消不消失的问题。所以静态全局变量和普通全局变量的区别是:普通全局变量在其他源文件中可以通过extern全局变量名的声明,来使用该变量,而静态全局变量只能在变量所在的文件中使用,即使你在其他文件中使用extern声明也不可以使用,这样可以有效避免不同文件全局变量的冲突。
希望能解决您的问题。
Ⅷ 关于c语言static变量
函数中定义的static存储型变量的地址被返回后,在主调函数中通过指针操作该变量是合法的,以下代码可以验证:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
int*f(void){
statica=1;
return&++a;
}
intmain(void){
int*p=f();
printf("%d ",*p);
*p=7;
printf("%d ",*p);
printf("%d ",*f());
return0;
}
输出是:
2
7
8
说明很正常。
Ⅸ static在c语言中是什么意思
写在局部变量前面表示变量是静态变量,函数调用结束后变量不回收。
写在全局变量前面,表示静态全局变量,该变量只能在本文件中访问,不可以被其余地方extern。
static 出现在不同的地方含义不同的。
如果是在函数之外使用,表示该对像在此文件中是全局可访问的,在文件之外是不可访问的。
如果出现在函数内部,则表示该变量不是自动变量,它是一个可以初始化的变量(如果不进行显式初始化,默认值是0)。改变了它的值以后,函数结束时它的值也会保留。
(9)c语言定义static变量扩展阅读:
static int n; //定义静态全局变量改为int n; //定义全局变量
再次编译运行程序,细心体会全局变量和静态全局变量的区别。
全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。
全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。
Ⅹ C语言中静态变量与动态变量的定义与区别
动态变量和静态变量定义和区别如下:1、定义上,静态变量比动态变量多一个关键字static,比如:动态变量:inti;静态变量:staticinti;2、动态变量在子程序中,每次调用时都会从零开始,不会保留原有数据,静态变量调用时原有值不会发生改变,比如:main(){inti;for(i=0;i<5;i++)fun();//fun1();}voidfun()//输出结果为11111{intj;j++;printf("%d",j);}voidfun1()//输出结果为12345{staticintj;j++;printf("%d",j);}