c语言static,在C语言中static有什么含义
来源:整理 编辑:好学习 2023-06-04 21:29:23
本文目录一览
1,在C语言中static有什么含义
是静态存储类型的意思,用static声明的变量在函数调用结束后依然存在,也就是在整个程序中都能用这个变量。如 static int a;这个a就是静态存储变量。
2,C语言static什么意思怎么用大谢
就是从调用那时候开始 一直到程序结束 一直占据内存的!比如 for(i=0;i<5;i++) static int a=3; a=a+5;} 初始化只在第一次运行的时候生效 就一直在内存中了。第二次循环的时候 不进行那初始化的static 静态变量惹静态函数如 static int a:a是静态变量static void a():a 是静态函数
3,C语言里static是什么
当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。
在函数的返回类型前加上关键字static,函数就被定义成为静态函数。只是在声明他的文件当中可见,不能被其他文件所用。
static int i=0;
i只在第一次使用时候赋值
void fun()
static int i=0;
int j=0;
i++;
}每次调用该函数时候,j的值都是零,i的值只有第一次调用时是0,以后++
4,c语言里static有什么用
如果没有static,每次进到convert函数里面num都会从0开始,有了static,只有第一次进到convert函数num是0,以后每次进到convert时num的值是它上次修改后的值static变量大概是两种情况 在函数里的static变量意味着这个变量的生存期是全局的,你可以想象它实际上就是在函数外声明的, 当然因为可见范围的原因其他函数不能访问它 在函数外的static变量意思是本地的, 跟不加static的差别就是其他文件不能通过extern来访问这个变量。且它的当前值一直保持到下一次访问,在此不论,若声明时不对其初始化,用static修饰的变量的寿命与程序执行时间一样长在C中。C++对static的功能有所扩展;除此无别,编译器会自动初始化为0当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。 在函数的返回类型前加上关键字static,函数就被定义成为静态函数。只是在声明他的文件当中可见,不能被其他文件所用。
5,C语言中static是做什么用的
最主要有两点用途。1. 让一个变量长期有效,而不管其是在什么地方被申明。比如: int fun1() static int s_value = 0; .... } 那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(请注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。2.避免多个文件使用了相同的变量名而导致冲突 比如有多个文件,分别由几个人独立开发的。假定他们在各自的文件中定义相同的“全局”变量名(仅仅指在他们独自的文件中全局),当系统集成时,由于他们使用了名字一样的“全局”变量,导致有难于遇见的问题。解决这个问题方便的做法就是在各自文件中,在相同的全局变量申明前加上static修饰符。这样系统就会为他们分配不同的内存,互不影响了。在C语言中,static的作用有三个,分别如下: 1、隐藏; 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。 2、保持变量内容的持久; 存储在静态数据区的变量会在程序刚开始运行时就完成初 始化,也是唯一的一次初始化。 3、默认初始化为0; 在静态数据区,内存中所有的字节默认值都是0x00,某些 时候这一特点可以减少程序员的工作量。这个应该是个静态存储,在一次循环之后,带入的值是不会被释放的,也就是说第一次循环结果是多少第二次循环还是多少,不会变成题目初始值。c语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。 c语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用c语言明显优于其它解释型高级语言,有一些大型应用软件也是用c语言编写的。 c语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。static和extern定义的变量都是在静态存储区分配存储单元的。在C语言中可以同时建立多个文件,可将不让其他文件引用的本文件中的全局变量都加上static,成为静态全局变量,对其他文件屏蔽起来,而extern的功能刚好相反。详细的功能可以参考c课本的作用域与存储类型。
6,c语言中static关键字
C++面向过程的static和C的是一样的。 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 一、面向过程设计中的static 1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1 #include <iostream.h> void fn(); static int n; //定义静态全局变量 void main() cout<<n<<endl; fn(); } void fn() cout<<n<<endl; } 静态全局变量有以下特点: 该变量在全局数据区分配内存; 未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化); 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的; 静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的分布情况如下图: 代码区 全局数据区 堆区 栈区 一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静 态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心的读者可能会发现,Example 1中的代码中将 static int n; //定义静态全局变量 改为 int n; //定义全局变量 程序照样正常运行。 的确,定义全局变量就可以实现变量在文件中的共享,但定义静态全局变量还有以下好处: 静态全局变量不能被其它文件所用; 其它文件中可以定义相同名字的变量,不会发生冲突; 您可以将上述示例代码改为如下: //Example 2//File1 #include <iostream.h> void fn(); static int n; //定义静态全局变量 void main() cout<<n<<endl; fn(); } //File2 #include <iostream.h> extern int n; void fn() cout<<n<<endl; } 编译并运行Example 2,您就会发现上述代码可以分别通过编译,但运行时出现错误。 试着将 static int n; //定义静态全局变量 改为 int n; //定义全局变量 再次编译运行程序,细心体会全局变量和静态全局变量的区别。 2、静态局部变量 在局部变量前,加上关键字static,该变量就被定义成为一个静态局部变量。 我们先举一个静态局部变量的例子,如下: //Example 3 #include <iostream.h> void fn(); void main() fn(); fn(); } void fn() cout<<n<<endl; n++; } 通常,在函数体内定义了一个变量,每当程序运行到该语句时都会给该局部变量分配栈内存。但随着程序退出函数体,系统就会收回栈内存,局部变量也相应失效。 但有时候我们需要在两次调用之间对变量的值进行保存。通常的想法是定义一个全局变量来实现。但这样一来,变量已经不再属于函数本身了,不再仅受函数的控制,给程序的维护带来不便。 静态局部变量正好可以解决这个问题。静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下一次调用,直到下次赋新值。 静态局部变量有以下特点: 该变量在全局数据区分配内存; 静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; 静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0; 它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束; 3、静态函数 在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。 静态函数的例子: //Example 4 #include <iostream.h> static void fn();//声明静态函数 void main() fn(); } void fn()//定义静态函数 cout<<n<<endl; } 定义静态函数的好处: 静态函数不能被其它文件所用; 其它文件中可以定义相同名字的函数,不会发生冲突;静态分配的变量。在编译阶段就已经为该变量分配内存并初始化,有别于函数中的动态分配的局部变量,他们只在调用该函数时分配内存,调用结束后内存被释放,而STATIC变量是静态分配的,函数调用结束后仍然存在,不管程序中有多少次调用,都使用同一个内存地址。在C语言中,static关键字有三种用途:1 用于全局变量定义时。 全局变量定义时加上static修饰,表示该变量为静态全局变量。作用域为当前文件。2 用于函数定义或声明。任意函数的定义或声明中包含了static修饰,表示该函数为静态函数,只能在本文件中被调用。3 用于局部变量定义。局部变量定义时,带有static关键字,表示其为静态局部变量,只被初始化一次,之后每次调用函数时,该变量值为上次函数退出时的值。即,改变量的生存周期被扩展到整个程序运行时间段内。抽象方法不需要实现,则从标签对应的地方开始执行 case java语言的关键字c语言中的关键字 auto :说明变量在程序执行中可被隐含地改变 do ,但是需要在子类中被实现 break 一个java的关键字,用来改变程序执行流程:循环语句的循环体 while :结束当前循环,开始下一轮循环 for:一种循环语句(可意会不可言传) signed。一个抽象类可以使用抽象方法:条件语句否定分支(与 if 连用) long :条件语句 wnx1003@163.com java学习 abstract 抽象的 一个java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承:循环语句的循环条件 static :声明无符号类型变量或函数 continue,用来声明当try语句块中发生运行时错误或非运行时异常时运行的一个块。 catch java的一个关键字:声明自动变量 一般不使用 double :声明双精度变量或函数 int:声明浮点型变量或函数 short :声明积存器变量 typedef:生命有符号类型变量或函数 void :声明函数无返回值或无参数:声明结构体变量或函数 break:跳出当前循环 else : 声明整型变量或函数 struct:计算数据类型长度 volatile,立刻从当前语句的下一句开始执行从。如果后面跟有一个标签,用来定义一组分支选择,如果某个值和switch中给出的值一样,就会从该分支开始执行:用以给数据类型取别名(当然还有其他作用) char :声明字符型变量或函数 extern:声明变量是在其他文件正声明(也可以看做是引用变量) return :子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const :声明只读变量 float:声明短整型变量或函数 unsigned,声明无类型指针(基本上就这三个作用) default:开关语句中的“其他”分支 goto:无条件跳转语句 sizeof:声明静态变量 if:声明长整型变量或函数 switch :用于开关语句 case:开关语句分支 enum :声明枚举类型 register
文章TAG:
c语言 语言 static 言中 c语言static