前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈static a[n*m]={0};中static的作用

浅谈static a[n*m]={0};中static的作用

作者头像
zls365
发布2020-08-19 11:44:50
6450
发布2020-08-19 11:44:50
举报
文章被收录于专栏:CSharp编程大全

正如我们知道的,函数内部的一般变量和数组都在栈区开辟内存,但是栈区的内存是有限的,当我们要开辟的内存较大时,编译器会报错,那我们该如何处理呢?

我们又知道,static int a;表示在全局区为变量a分配内存,同理我们在数组前面加上static之后,系统也为该数组在全局区分配内存,全局区的总内存比较大,一般会满足我们的需求。

如题:当n*m比较大时,这就是为什么static a[n*m]={0};必须带着static的原因了。

静态分配的,有两种情况: 1. 用在类里的属性、方法前面,这样的静态属性与方法不需要创建实例就能访问, 通过类名或对象名都能访问它,静态属性、方法只有“一份”:即如果一个类新建有N个 对象,这N 个对象只有同一个静态属性与方法; 2. 方法内部的静态变量: 方法内部的静态变量,执行完静态变量值不消失,再次执行此对象的方法时,值仍存在, 它不是在栈中分配的,是在静态区分析的, 这是与局部变量最大的区别;

1.static意思是静态,可以修饰类、字段、属性、方法 2.标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 3.static三种用法: 4.用于变量前,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值,这个方法称为静态函数: private void s() { static int a=1; a++; } 方法第一次调用结束后a在内存内值为2; 方法第一次调用结束后a在内存内值为3; 5.在方法(函数)前用static修饰,表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有,这个方法称为静态方法: 情况一:非静态方法: class t { t(....(参数,下面同)) { ~~~~(方法内容,下面同) } void s(....) { ~~~~ } } 当你在其他方法里调用这个类中的方法s,则需先声明这个类的变量如:t sd = new t(....); 再在t里调用方法:sd.s(....); 情况2:静态方法: class t { t(....(参数,下面同)) { ~~~~(方法内容,下面同) } static void s(....) { ~~~~ } } 7.当你在其他方法里调用这个类中的方法s,则不用先声明这个类的变量如直接调用方法:t.s(....); 8.用于class前,说明此类型无法新建实例,简单点说这个类型的方法全是静态方法,这个类里的非静态方法是不能使用的,这个类型称为静态类. 比如C#控制台操作的Cancle类里面的成员就被标记为静态的,可以直接用Concle.直接点出来使用。 9.如果没有标记为静态就要通过创建实例对象来调用,比如说动态字符串StringBuilder就要new一个实例来调用 StringBuilder sb =new StringBuilder(); sb.xxx(); //xxx是方法名 static class t { ~~~~ } ~~~~ class d { ~~~~ void f(....) { ~~~~ t v = new t();//此时程序会出现错误 }

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档