c语言中static说明是什么意思?

Python06

c语言中static说明是什么意思?,第1张

在C语言中,static关键字的作用如下:

1、在修饰变量的时,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。

2、static修饰全局变量的时,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。

3、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。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(计算机高级语言)

static可应用于应用于内部变量、外部变量和函数。应用于内部变量时,其作用是用来指定变量的存储类别为静态变量。应用于外部变量和函数时,其作用是限制变量或函数的作用范围仅限于外部变量或函数所在的源文件。

1、在整个程序运行的过程中,无论静态内部变量所在的函数被调用了多少次,静态内部变量只运行一次初始化,即在程序运行时完成的。

2、在函数的两次调用期间,静态内部变量所在存储单元不被释放,因而当前次函数调用执行时其值会被保存下来,下次调用时该值依然存在。即静态内部变量的值在从一次函数调用到下一次函数调用到下一次函数调用到下一次函数调用之间保持不变。

3、 默认情况下,外部变量的作用域是从定义变量的位置到所在源文件的末尾。

一、函数分为内部函数和外部函数

当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。

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

如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。

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

static 函数类型 函数名(函数参数表){……}

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

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

2、外部函数

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

[extern] 函数类型 函数名(函数参数表){……}

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

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

二、C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

扩展资料:

static的作用

在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。

1、最重要的一条:隐藏。

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

加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。

2、static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。

3、static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以一个一个地把所有元素都置0,然后把不是0的几个元素赋值。

如果定义成静态的,就省去了一开始置0的操作。再比如要把一个字符数组当字符串来用,但又觉得每次在字符数组末尾加’\0’太麻烦。如果把字符串定义成静态的,就省去了这个麻烦,因为那里本来就是’\0’。

最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。

参考资料来源:

百度百科-static函数

百度百科-c语言

静态语言,是固定运行结果的语言,典型的范例就是html编写的静态页面代码,比如说创建一个表格,在html语言中表格行列数是不能变化和调整的。 动态语言,根据条件的不同,输出的内容可能不同。例如:编写网页的asp语言,可以通过查询数据库,生成动态行数的数据表。编译语言,一般情况下需要通过编译环境生成对应的可执行程序或者目标程序,才能够执行。解释语言,在运行时对编码进行解释,直接执行。例如asp语言,就是解释型语言,不需要编译生成可执行程序。一般来讲,C语言和java都是需要通过编译生成可执行程序或者目标程序,所以它们都是编译语言。