C语言中static是做啥用的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中static是做啥用的?相关的知识,希望对你有一定的参考价值。

看网上说法不一。如果是为程序中的通用变量定义的话(就像VB中的Public一样)。那指针不是也可以么?还有。在main()之外定义变量不是也可以整个程序通用么?

有两种用法:

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

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

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

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

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

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

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

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

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

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

扩展资料:

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

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

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

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

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

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

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




参考技术A

C语言中static具有静态存储持续时间、块范围和无链接。即作用域只能在块中,无法被块外的程序调用;变量在程序加载时创建,在程序终止时结束。

它只在编译时初始化一次。如果没有显式初始化,默认初始化为0。变量stay ,它从程序加载时开始存在,直到程序终止。但是它的范围仅限于trystat() 函数块。只有当这个函数执行时,程序才能使用stay 访问它指定的对象。

静态变量在程序加载到内存之后就已经就位了。将语句static int stay = 1; 放在trystat()函数中告诉编译器,只允许trystat() 函数查看变量;它不是在运行时执行的语句。

扩展资料

在任何函数外部使用static修饰变量,它具有静态存储时间、文件范围和内部链接。

即作用域在当前文件之中(只能被同一文件中的函数使用),无法被其他文件调用。它只在编译时初始化一次。如果没有显式初始化,默认初始化为0。

使用static修饰函数,作用域限制在当前定义的文件中使用,从而避免了多文件函数名称冲突的可能性。通常文件中不作为接口的函数,建议使用static修饰,这样避免不同文件使用相同的函数名发生冲突。

参考技术B

在C语言中,static关键字的功能如下:

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

2,当static修改全局变量时,全局变量只能在该文件中访问,而不能在其他文件中访问,甚至在外部声明中也不能访问。

3,static修饰函数,则此函数只能在此文件中调用,不能由其他文件调用,并且static修饰的局部变量存储在全局数据区域的静态变量区域中。

扩展资料:

static关键字在C语言、C++、Java中的作用是相似的,但也有区别:

1、C++的static用法:

面向过程的静态编程和面向对象的静态编程,前者适用于普通变量和函数,不涉及类,后者主要解释静态在类中的作用。然后在类中,static可用于修饰静态数据成员和静态成员方法

2、Java的static用法:

声明为静态的变量称为静态变量或类变量,静态变量可以通过类名或实例名直接引用,但前者更好,因为后者容易将静态变量与常规变量混淆。

声明为静态的方法称为静态方法或类方法,静态方法可以直接调用静态方法和访问静态变量,但不能直接访问实例变量和实例方法,此关键字不能在静态方法中使用,因为静态方法不属于任何实例。

参考资料来源:百度百科--static


参考技术C

为定义一个内部函数。

当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,为内部函数。

定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,static 函数类型 函数名(函数参数表)……,其对函数的作用域仅局限于本文件。不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

扩展资料:

C语言的相关要求规定:

1、在主调函数中调用某函数之前应对该被调函数进行说明(声明),这与使用变量之前要先进行变量说明是一样的。

2、在主调函数中对被调函数作说明的目的是使编译系统知道被调函数返回值的类型,以便在主调函数中按此种类型对返回值作相应的处理。

3、C语言允许在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。

参考资料来源:百度百科-static

参考技术D

static 用来说明静态变量。如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在当前c程序文件中使用,在另一个c代码里面,即使使用extern关键词也不能访问这个static变量。如果是在函数内部定义的,那么这个变量只初始化一次。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

C语言继续发展,在1982年,很多有识之士和美国国家标准协会为了使这个语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。委员会由硬件厂商,编译器及其他软件工具生产商,软件设计师,顾问,学术界人士,C语言作者和应用程序员组成。

MATLAB是做啥用的?

MATLAB用于数值分析、数值和符号计算、数据可视化、数字图像处理、数字信号处理。

MATLAB高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;具有完备的图形处理功能,实现计算结果和编程的可视化;友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;功能丰富的应用工具箱,为用户提供了大量方便实用的处理工具。

扩展资料:

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷的多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。

MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。它是一个集成的 用户工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器、MATLAB工作空间和在线帮助文档。

参考资料来源:百度百科-MATLAB

参考技术A MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连
matlab开发工作界面
接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

参考资料:http://baike.baidu.com/view/10598.htm

本回答被提问者采纳
参考技术B MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连
matlab开发工作界面
接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
参考技术C 你好,matlab涉及图像处理、数理统计、模拟仿真、信号处理等诸多领域,功能强大,在工程学方面应用很多。另外,大学的数学建模比赛一般也要用到matlab,可谓用处良多。
matlab主要是以矩阵为基础,这是以大学的高等代数为基础的,高中生不大适合学习matlab。
物理要做实验,要分析数据,这里matlab就有作用了。总之,在科学领域,很可能会用到matlab,你说的其他的软件也一样。
建议lz先搞好自己的学习,考个好大学。这些东西到大学自然会开始接触的。
参考技术D MATLAB 产品族可以用来进行以下各种工作:
● 数值分析
● 数值和符号计算
● 工程与科学绘图
● 控制系统的设计与仿真
● 数字图像处理 技术
● 数字信号处理 技术
● 通讯系统设计与仿真 MATLAB在通讯系统设计与仿真的应用
● 财务与金融工程
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。

以上是关于C语言中static是做啥用的?的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB是做啥用的?

在这个汇编代码中,“xorl”和“imul”是做啥用的?可以转成c代码吗?

JS文件是做啥用的?

C盘的MSBuild,MSECache,文件夹是做啥用的?

sqlplus 中的 -s 选项是做啥用的?

web service做啥用的,我知道winform是做c/S的软件,webform 是做网站