在c语言中或在c++中,static 是怎么用的,麻烦高人请详细说明一下,并且举两例子,谢谢。

1全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。. 用static申明静态局部变量, 这种变量只执行一次初始化, 以后你在使用就不会执行初始化代码了

静态变量的特点是:仅在程序开始运行时被初始化一次,以后每一次被调用时保存的的结果都可以在下一次被调用时使用。

c语言static作用_c语言static的作用举例c语言static作用_c语言static的作用举例


c语言static作用_c语言static的作用举例


在C语言及由其派生出的C++与Objective-C等程序语言中,“static”是用于控制变量的生命周期和连接方式(即其作用域,亦即可见性)的保留字。

所以如果希望每一次调用函数得到的结果在下一次调用时使用,就可以用static变量来保存这样的数据。

C语言中变量存储static和extern两个关键字的作用分别是什么

static个作用:隐藏

在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。

(1)修饰局部变量

一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对局部变量进行修饰过后,其生命周期以及存储空间发生了变化,但是其作用域并没有改变,其仍然是一个局部变量,作用域仅限于该语句块。

在用static修饰局部变量后,该变量只在初次运行时进行初始化2、static变量:针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。工作,且只进行一次。

如:

#include

程序执行结果为: 2

3说明在第二次调用fun()函数时,a的值为2,并且没有进行初始化赋值,直接进行自增运算,所以得到的结果为3.

对于静态局部变量如果没有进行初始化的话,对于整形变量系统会自动对其赋值为0,对于字符数组,会自动赋值为'0'.

(2)修饰全局变量

对于一个全局变量,它既可以在本源文件中被访问到,也可以在同一个工程的其它源文件中被访问(只需用extern进行声明即可)。

如:

int a=1;

file2.c

#include

extern int a;

int main(void)

{printf("%d",a);

}则执行结果为 1

但是如果在file1.c中把int a=1改为static int a=1;

那么在file2.c是无法访问到变量a的。原因在于用static对全局变量进行修饰改变了其作用域的范围,由原来的整个工程可见变为本源文件可见。

(3)修饰函数

用static修饰函数的话,情况与修饰全局变量大同小异,就是改变了函数的静态变量也可以用于存储常数。具体来说,静态变量(全局变量及汇编语言里定义的符号亦同)可用const,constant或final(根据语言决定)等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。作用域。

extern关键字

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。

c语言中const、static关键字的用法?

1.static,是静态变量的声明符

const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

const可以修饰变量,函数的入参,函数的返回值

2 外部函数3.

当我们同时编译多个文件时,所有2、static变量只赋值一次,以后就不用赋值;而auto变量在函数每调用一次都要赋初值。未加static前缀的全局变量和函数都具有全局可见性。

4.

static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。

1.

const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

const可以修饰变量,函数的入参,函数的返回值

3.

当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。

4.

C语言中什么叫静态

(4)文件subf3.c

在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别是静态变量static。

2. 全局static函数和变量, 加了static申明的全局函数和变量会将该函数/变量的作用于限制在本文件内部。这样,虽然是全局的函数/变量,但是其他文件不可见不可使用,在c中可屏蔽一些名称冲突等。c++有了名称空间概念和类之后就用的比较少了吧。反正我很少这样用。

而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文}所以运行的结果为:7,8,9件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

扩展资料

除明确标识出变量的生命周期外,将变量声明为static存储类还会根据变量属性不同而有一些特殊的作用:

1、对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域;

2、对于静态局部变量来说,在函数内以static声明的变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内),但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同。

一般来说,静态分配时存储空间于编译时在程序数据段分配,一次分配全程有效;而自动分配时存储空间则是于调用栈上分配,只在调用时分配与释放,且两次调用间变量值始终保持一致;必须注意,静态局部变量只能初始化一次,这是由编译器来保证实现。

c语言中静态变量是怎么用的

2.有file1.c

就是全局变量啊,比如如果需要计数然后那个函数需要一次次的被重新利用,那就需要静态变量了啊,静态变量不会因为局部函数被清空而清空而是会一直被保留

静态局部变量(静态变量)是在编译时赋初值的,即值赋初值一次,在程序运行时它已有初值,以后每次调用函数式不在重复赋初值而只在保留商城函数调用结束时的值。

使被调用函数调用结束后,被调用函数中的静态变量不会被释放,并保留上一次调用的值

#include"stdio.h"

void main()

{int f(int);

int a=2,i;

for(i=0;i<3;i++)

}int f(int a)

{auto int b=0; //aubo为自动变量的标志,则b为自动变量

static int c=3;//static 为静态局部变量的标志,则c为静态局部变量

b=b+1; //b为自动变量,则b一直等于1

c=c+1; //c为静态局部变量,则c随着for循环分别为4,5,6

return(a+b+一、主体不同c);

注:静态局部变量(静态变量)是在编译时赋初值的,即值赋初值一次,在程序运行时它已有初值,以后每次调用函数式不在重复赋初值而只在保留商城函数调用结束时的值。

静态变量的类型说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量, 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 对于自动变量,它属于动态存储方式。 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。 由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。

例如:

static unsigned char i;

C语言中由Static 定义的变量的作用范围

解释原因: 在程序2.运行时就会自动创建

作用于整个程序中,相当于全局[extern] 函数类型 函数名(函数参数表)变量 ,不过它可以定义在程序的任何地方,比如函数内,只要变量前加了 static ,这部分变量对应的内存就不会被回收,直到程序结束。

static有两个用途:1.在函数中用来定义变量时,使这个变量变为一个静太分配的变量,也即函数调用结束后该变量仍然存在,并且他只会初始化一次,且这个初始化是在编译阶段完成的.

2.在函数外用来定义变量时他会使得这个变量只在该文件中可见,也即其他文件是无法访问的,哪怕加了extern!

作用于整个程序中,属于全局变量

c语言中static关键字

static的第二个作用是保持变量内容的持久。

静态分配的变量。在编译阶段就已经为该变量分配内存并初始化,有别于函数中的动态分配的局部变量,他们只在调用该函数时分配内存,调用结束后内存被释放,而STATIC变量是静态分配的,函数调用结束后仍然存在,不2. 静态局部变量管程序中有多少次调用,都使用同一个内存地址。

编译时只编译一次,防止重复编译带来的static int f = 1; 该语句无论循环多少次,只会执行次,也就是说,次初始化为f=1;重定义错误

C语言编程中“static”是什么意思?

参考资料来源:

就是静态变量的意思,用这个声明的变量可以在类中任何位置被调用。

static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是的一次初始化。

是静态的……意思就是在那里边儿只有这个static方法才可以调用静态变量,静态方法里面也可以调用静态方法

static在C++中的详解

static(静态变量)

要对其详解,先得说下变量,有全局和局部之分

对于声明定义部分,无论其被调用几次,

static的引入是为了解决“变量的可持续使用”和“在一定范围内使用”的问题

对于,可持续使用,

{static int a = 3;
....
}

都只执行一次

对于,一定范围内使用还有一个是外部变量。

,若是定义在程序的头文件,或是函数之外,那么,这个变量的作用范围就是这个文件,若是定义在函数中,它的作用范围就只是在这个函数中。

不同文件中,可以有同名的static变量

static的用法(基本常用的哈, 高深的我也不知道)

3. 申明类的静态成员函数/变量。

1. static 变量

静态变量的类型说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。

静态局部变量属于静态存储方式,它具有以下特点:

(1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。

(2)允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以0值。

(3)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

3.静态全局变量

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。

4. static 函数….. === 内部函数和外部函数

1 内部函数(又称静态函数)

定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:

static 函数类型 函数名(函数参数表)

关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。

使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

外部函数的定义:在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:

调用外部函数时,需要对其进行说明:

[extern] 函数类型 函数名(参数类型表)[,函数名2(参数类型表2)……];

[案例]外部函数应用。

(1)文件mainf.c

main()

{ extern void input(…),process(…),output(…);

input(…); process(…); output(…);

}(2)文件subf1.c

extern void input(……) /定义外部函数/

(3)文件subf2.c

extern void process(……) /定义外部函数/

extern void output(……) /定义外部函数/

C语言static的用法?

return 0;

第二次进入循环的时候 就意味着将static int f = 1;这句话屏蔽掉了

2、初始化不同

次:f=1,i=1,f=fn=fi=11=1;

第二次:f=1,i=2,f=fn=fi=12=2;

第三次:f=2,i=3,f=fn=fi=23=6;

次:f=24,i请先给出明确答复:静态=5,f=fn=fi=245=120。

请问在C语言中,auto和static分别代表什么意思,有什么作用,谢谢

{……}

c语言中变量一共有四种变量存储类,分别为:

5.

auto(自动变量)

register(寄存器变量{……})

你可以去百科一下了解详细情况。