当前位置:首页 » 编程语言 » c语言中static可以修饰
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中static可以修饰

发布时间: 2023-05-23 03:27:37

1. c语言static的作用和用法

static在c语言中是私有、静态意思。

用于在函数中声明“静态变量”用,在每一次调用后,该变量并不在函数返回时立即释放,变量中保存的值,可以保留到下一次调用时继续有效。

私有就是隐藏。static函数只兄派氏能声明后的本文中调用。static全局变量只能声明后的本文中调用。static局部变量只能声明后的本函数调用

静态就是一直存在,相对于每次调用动态分配而言。static函数未验证是否每次调用代码地址都是一致的。static全局羡散变量生命周期到程序或进程结束。static局部变量生命周期到程序或进程结束。

static的使用和作用

静态全局变量。全局变量前加static,修饰全局变量为静态全局变量,改变全局羡毕变量的可见性。静态局部变量。局部变量前加static,修饰局部变量为静态局部变量,改变局部变量的销毁时期。静态函数。函数返回类型前加static,修饰函数为静态函数,改变函数的可见性。

类的静态成员。类成员前加static,修饰类的成员为类的静态成员,实现多个对象之间的数据共享,并且使用静态成员不会破坏封装性,也保证了安全性。类的静态函数,类函数前加static,修饰类的函数为静态函数,减少资源消耗,不需要实例化就可以使用。

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

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

(1)修饰局部变量

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

在用static修饰局部变量后,该变量只在初次运行时进行初始化工作,且只进行一次。

如:

程序执行结果为: 2

3

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

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

(2)修饰全局变量

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

如:

有file1.c

int a=1;

file2.c

#include<stdio.h>

extern int a;

int main(void)

{

printf("%d",a);

return 0;

}

则执行结果为 1

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

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

(3)修饰函数

用static修饰函数的话,情况与修饰全局变量大同小异,就是改变了函数的作用域。

extern关键字

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。
在上面的例子中可以看出,在file2中如果想调用file1中的变量a,只须用extern进行声明即可调用a,这就是extern的作用。在这里要注意extern声明的位置对其作用域也有关系,如果是在main函数中进行声明的,则只能在main函数中调用,在其它函数中不能调用。其实要调用其它文件中的函数和变量,只需把该文件用#include包含进来即可,为啥要用extern?因为用extern会加速程序的编译过程,这样能节省时间。

3. C语言中static是做什么用的

有两种用法:

1、static修饰局部变量,成为一个局部静态变量。

static修饰局部变量(静态局部变量)与普通局部变量相比,它的优势在于:

①静态局部变量作用域与连接属性与普通局部变量一样;

②存储类:静态局部变量分配在data/bss段,普通局部变量在栈上;

③生命周期:因为存储类的不同,静态局部变量的生命周期得到延长了,直到程序结束。

2、static修饰全局变量与函数,成为静态全局变量与静态函数。

static修饰全局变量函数 与 普通全局变量普通函数相比,它的优势在于:

①存储类、生命周期、作用域都一样;

②差别在于static修饰全局变量函数连接属性是内连接,普通全局变量普通函数是外链接;

③就是说static修饰全局变量函数不能跨文件访问调用。

(3)c语言中static可以修饰扩展阅读:

在类内数据成员的声明前加上static关键字,该数据成员就是类内的静态数据成员。其特点如下:

静态数据成员存储在全局数据区,静态数据成员在定义时分配存储空间,所以不能在类声明中定义

静态数据成员是类的成员,无论定义了多少个类的对象,静态数据成员的拷贝只有一个,且对该类的所有对象可见。也就是说任一对象都可以对静态数据成员进行操作。而对于非静态数据成员,每个对象都有自己的一份拷贝。

由于上面的原因,静态数据成员不属于任何对象,在没有类的实例时其作用域就可见,在没有任何对象时,就可以进行操作

和普通数据成员一样,静态数据成员也遵从public, protected, private访问规则

静态数据成员的初始化格式:<数据类型><类名>::<静态数据成员名>=<值>

类的静态数据成员有两种访问方式:<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>




4. 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声明也不可以使用,这样可以有效避免不同文件全局变量的冲突。
希望能解决您的问题。

5. static在c语言中是什么意思

写在局部变量前面表示变量是静态变量,函数调用结束后变量不回收。

写在全局变量前面,表示静态全局变量,该变量只能在本文件中访问,不可以被其余地方extern。

static 出现在不同的地方含义不同的。

如果是在函数之外使用,表示该对像在此文件中是全局可访问的,在文件之外是不可访问的。

如果出现在函数内部,则表示该变量不是自动变量,它是一个可以初始化的变量(如果不进行显式初始化,默认值是0)。改变了它的值以后,函数结束时它的值也会保留。

(5)c语言中static可以修饰扩展阅读:

static int n; //定义静态全局变量改为int n; //定义全局变量

再次编译运行程序,细心体会全局变量和静态全局变量的区别。

全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。

全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。

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

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

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

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

3、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。

(6)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(计算机高级语言)

7. static关键字的作用

static关键字的作用如下:

1、修饰变量

静态全局变量:全局变量前加static修饰,该变量就成为了静态全局变量。我们知道,全部变量在整个工程都可以被访问,而在添加了static关键字之后,这个变量就只能在本文件内被访问了。因此,在这里,static的作用就是限定作用域。

静态局部变量:局不变量添加了static修饰之后,该变量就成为了静态局部变量。我们知道局部变量在离开了被定义的函数后,就会被销毁,而当氏笑使用static修饰之后,它的作用域就一直到整个程序结束。因此,在这里static的作用就是限定生命周期。

2、修饰函数

修饰函数则该函数成为静态函数,函数的作用域仅限于本文件,而不能被其它信轮文件调用。

c语言介绍

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