static的作用static函数什么作用 (详细点)

static的作用  时间:2021-01-24  阅读:()

C语言中static函数的具体作用是什么?

C语言中static函数的具体作用是: 1. 让一个变量长期有效,而不管其是在什么地方被申明。

2. 避免多个文件使用了相同的变量名而导致冲突。

C语言里面的静态函数和函数的区别是: 1. 静态函数是函数的一种,函数包括静态函数和非静态函数两种。

2. 静态函数是有static修饰的函数,如果没有,则为非静态函数(全局函数)。

3. 当整个程序只有一个C文件时,二者没有区别,当程序是由多个C文件组成时,二者的作用域,即可使用的范围不同。

4. 静态函数(带static的),只能在本文件中使用,无法跨文件,而非静态函数(不带static的),可以在任何一个文件中使用。

当在其它文件中使用时,需要做函数声明后再使用。

static修饰符的用处和用法!

java Static 用法 有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。

通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。

在成员的声明前面加上关键字static(静态的)就能创建这样的成员。

如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。

你可以将方法和变量都声明为static。

static 成员的最常见的例子是main( ) 。

因为在程序开始执行时必须调用main() ,所以它被声明为static。

声明为static的变量实质上就是全局变量。

当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。

声明为static的方法有以下几条限制: ? 它们仅能调用其他的static 方法。

? 它们只能访问static数据。

? 它们不能以任何方式引用this 或super(关键字super 与继承有关,在下一章中描述)。

如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。

下面的例子显示的类有一个static方法,一些static变量,以及一个static 初始化块: // Demonstrate static variables,methods,and blocks. class UseStatic { static int a = 3; static int b; static void meth(int x) { System.out.println("x = " + x); System.out.println("a = " + a); System.out.println("b = " + b); } static { System.out.println("Static block initialized."); b = a * 4; } public static void main(String args[]) { meth(42); } } 一旦UseStatic 类被装载,所有的static语句被运行。

首先,a被设置为3,接着static 块执行(打印一条消息),最后,b被初始化为a*4 或12。

然后调用main(),main() 调用meth() ,把值42传递给x。

3个println ( ) 语句引用两个static变量a和b,以及局部变量x 。

注意:在一个static 方法中引用任何实例变量都是非法的。

下面是该程序的输出: Static block initialized. x = 42 a = 3 b = 12 在定义它们的类的外面,static 方法和变量能独立于任何对象而被使用。

这样,你只要在类的名字后面加点号运算符即可。

例如,如果你希望从类外面调用一个static方法,你可以使用下面通用的格式: classname.method( ) 这里,classname 是类的名字,在该类中定义static方法。

可以看到,这种格式与通过对象引用变量调用非static方法的格式类似。

一个static变量可以以同样的格式来访问——类名加点号运算符。

这就是Java 如何实现全局功能和全局变量的一个控制版本。

下面是一个例子。

在main() 中,static方法callme() 和static 变量b在它们的类之外被访问。

class StaticDemo { static int a = 42; static int b = 99; static void callme() { System.out.println("a = " + a); } } class StaticByName { public static void main(String args[]) { StaticDemo.callme(); System.out.println("b = " + StaticDemo.b); } } 下面是该程序的输出: a = 42 b = 99 解释的很透彻,还想补充点,就是static成员是不能被其所在class创建的实例访问的。

Example: Class MyClass { public static str = "this is for test purpose"; } MyClass instanceClass = new MyClass(); Console.WriteLine(MyClass.str); // Runs well Console.WriteLine(instanceClass.str); // Error,lack of essor 通俗点的解释如下: 1。

如果不加static修饰的成员是对象成员,也就是归每个对象所有的。

2。

加static修饰的成员是类成员,就是可以由一个类直接调用,为所有对象共有的。

希望对你有用!

static函数什么作用 (详细点)

static 是C中很常用的修饰符,它被用来控制变量的存储方式和可见性 static 声明的变量在C语言中有两方面的特征: 1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。

这一点是它与堆栈变量和堆变量的区别。

2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。

这一点是它与全局变量的区别。

2、问题:Static的理解 关于static变量,请选择下面所有说法正确的内容: A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度; C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题; D、静态全局变量过大,可那会导致堆栈溢出。

答案与分析: 对于A,B:根据本篇概述部分的说明b),我们知道,A,B都是正确的。

对于C:根据本篇概述部分的说明a),我们知道,C是正确的(所谓的函数重入问题,下面会详细阐述)。

对于D:静态变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出,D是错误的。

因此,答案是A、B、C。

3、问题:不可重入函数 曾经设计过如下一个函数,在代码检视的时候被提醒有bug,因为这个函数是不可重入的,为什么? unsigned int sum_int( unsigned int base ) { unsigned int index; static unsigned int sum = 0; // 注意,是static类型的。

for (index = 1; index <= base; index++) { sum += index; } return sum; } 答案与分析: 所谓的函数是可重入的(也可以说是可预测的),即:只要输入数据相同就应产生相同的输出。

这个函数之所以是不可预测的,就是因为函数中使用了static变量,因为static变量的特征,这样的函数被称为:带“内部存储器”功能的的函数。

因此如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量,这种函数中的static变量,使用原则是,能不用尽量不用。

将上面的函数修改为可重入的函数很简单,只要将声明sum变量中的static关键字去掉,变量sum即变为一个auto 类型的变量,函数即变为一个可重入的函数。

当然,有些时候,在函数中是必须要使用static变量的,比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

香港服务器多少钱一个月?香港云服务器最便宜价格

香港服务器多少钱一个月?香港服务器租用配置价格一个月多少,现在很多中小型企业在建站时都会租用香港服务器,租用香港服务器可以使网站访问更流畅、稳定性更好,安全性会更高等等。香港服务器的租用和其他地区的服务器租用配置元素都是一样的,那么为什么香港服务器那么受欢迎呢,香港云服务器最便宜价格多少钱一个月呢?阿里云轻量应用服务器最便宜的是1核1G峰值带宽30Mbps,24元/月,288元/年。不过我们一般选...

HostYun 新增可选洛杉矶/日本机房 全场9折月付19.8元起

关于HostYun主机商在之前也有几次分享,这个前身是我们可能熟悉的小众的HostShare商家,主要就是提供廉价主机,那时候官方还声称选择这个品牌的机器不要用于正式生产项目,如今这个品牌重新转变成Hostyun。目前提供的VPS主机包括KVM和XEN架构,数据中心可选日本、韩国、香港和美国的多个地区机房,电信双程CN2 GIA线路,香港和日本机房,均为国内直连线路,访问质量不错。今天和大家分享下...

iHostART:罗马尼亚VPS/无视DMCA抗投诉vps;2核4G/40GB SSD/100M端口月流量2TB,€20/年

ihostart怎么样?ihostart是一家国外新商家,主要提供cPanel主机、KVM VPS、大硬盘存储VPS和独立服务器,数据中心位于罗马尼亚,官方明确说明无视DMCA,对版权内容较为宽松。有需要的可以关注一下。目前,iHostART给出了罗马尼亚vps的优惠信息,罗马尼亚VPS无视DMCA、抗投诉vps/2核4G内存/40GB SSD/100M端口月流量2TB,€20/年。点击直达:ih...

static的作用为你推荐
赛我网怎么激活赛我网湖南商标注册在湖南搞商标注册是代理好还是自己去好一点?湖南商标注册的流程又是什么样的呢?安卓应用平台app应用平台有哪些 应用平台哪些童之磊网文大学很强吗?童之磊湖北中文在线数字出版有限公司怎么样?如何建立一个网站如何建立一个网站开机滚动条开机滚动条要很长时间怎么解决?怎么升级ios6苹果IOS5怎么升级IOS6版本免费免费建站可以不用钱免费做一个网站吗bt封杀BT下载可以封杀迅雷吗?什么原理?能破吗?
独立ip空间 美国vps推荐 谷歌域名邮箱 80vps 踢楼 电影服务器 国外bt 表单样式 华为云主机 150邮箱 美国十次啦服务器 傲盾官网 购买国外空间 宏讯 中国电信测速器 备案空间 lamp的音标 国外免费云空间 apnic 闪讯网 更多