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类型,则返回为错指针。

NameCheap新注册.COM域名$5.98

随着自媒体和短视频的发展,确实对于传统的PC独立网站影响比较大的。我们可以看到云服务器商家的各种促销折扣活动,我们也看到传统域名商的轮番新注册和转入的促销,到现在这个状态已经不能说这些商家的为用户考虑,而是在不断的抢夺同行的客户。我们看到Namecheap商家新注册域名和转入活动一个接一个。如果我们有需要新注册.COM域名的,只需要5.98美元。优惠码:NEWCOM598。同时有赠送2个月免费域名...

Pia云服务香港月20元游戏提供香港CN2云服务器

Pia云商家在前面有介绍过一次,根据市面上的信息是2018的开办的国人商家,原名叫哔哔云,目前整合到了魔方云平台。这个云服务商家主要销售云服务器VPS主机业务和服务,云服务器采用KVM虚拟架构 。目前涉及的机房有美国洛杉矶、中国香港和深圳地区。洛杉矶为crea机房,三网回程CN2 GIA,自带20G防御。中国香港机房的线路也是CN2直连大陆,比较适合建站或者有游戏业务需求的用户群。在这篇文章中,简...

Sharktech:无限流量服务器丹佛,洛杉矶,荷兰$49/月起,1Gbps带宽哦!

鲨鱼机房(Sharktech)我们也叫它SK机房,是一家成立于2003年的老牌国外主机商,提供的产品包括独立服务器租用、VPS主机等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等,主打高防产品,独立服务器免费提供60Gbps/48Mpps攻击防御。机房提供1-10Gbps带宽不限流量服务器,最低丹佛/荷兰机房每月49美元起,洛杉矶机房最低59美元/月起。下面列出部分促销机型的配置信息。机房...

static的作用为你推荐
根目录什么叫固件?什么叫根目录?暴风影音怎么截图暴风影音3 如何截图支付宝查询余额支付宝钱包怎么查余额?无线路由器限速设置无线路由器能设置限速吗?或者说那个牌子的能。中国电信互联星空电信不明不白收了我200元互联星空信息费 求解1433端口怎么开启本机1433端口ps抠图技巧ps抠图多种技巧,越详细越好,急~~~~~~~qq怎么发邮件用QQ怎样发送文件数据库损坏数据库坏了,怎么修复?三星s8什么时候上市三星s8什么时候上市 三星s8上市时间
国外服务器租用 万网域名代理 lunarpages vpsio 163网 外国域名 一点优惠网 商务主机 最好的空间 网站木马检测工具 速度云 静态空间 hktv linux使用教程 香港亚马逊 上海电信测速网站 浙江服务器 免费个人主页 主机返佣 电信宽带测速软件 更多