静态变量与非静态变量的区别

 我来答
卷毛小泡面
高能答主

2020-01-04 · 呼呼啦啦一通说
卷毛小泡面
采纳数:1599 获赞数:157765

向TA提问 私信TA
展开全部

1、存储位置不同

静态变量:存储在全局数据区(静态数据区)。

非静态变量叫动态变量:存储在内存出栈数据区。

2、生命期不同

动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效。

静态变量:程序结束时才释放。

3、作用域不同

动态变量:同样的要根据你定义的位置才能确定,和第二点的一样。

静态变量:当前文件中有效。

扩展资料;

静态变量的作用;

1、对于静态全局变量,源文件静态声明的文件级变量和函数的作用域仅限于文件(仅在文件中可见),即内部连接,因此可以用来限制变量的作用域。

2、对于静态局部变量,虽然函数内静态声明的变量范围与自动局部变量的范围相同(即范围仅在函数内),但存储空间是通过静态分配而不是默认的自动分配获得的。

所以存储空间在不同的区域是不同的(一般来说,静态分配时在编译时在程序数据段中划分存储空间,一次性分配在整个过程中是有效的。而在自动分配时,存储空间是在调用堆栈上分配的,只分配和释放在调用期间),两个调用之间的变量值总是一致的。必须注意,静态局部变量只能初始化一次,这是由编译器保证的。

3、对于静态成员变量,在C++中,类定义中静态声明的成员变量属于类变量,即它们在所有类实例中共享,相反是过程变量。

参考资料来源;百度百科——静态变量

百度百科——动态变量

Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
妆尘朝4206
推荐于2017-11-23 · TA获得超过496个赞
知道答主
回答量:493
采纳率:0%
帮助的人:290万
展开全部
A窗体类:
...
//定义列表为全局静态变量
public static List<string> Data=new list<string>(100);
...

B窗体类:
...
//访问列表值
foreach (string n in aaa)
{
Console.WriteLine(A.Data[n]);
}
...

静态变量与非静态变量的区别如下:
1.内存分配
静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡;
而非静态变量需要被实例化后才会分配内存。
2.生存周期
静态变量生存周期为应用程序的存在周期;
非静态变量的存在周期取决于实例化的类的存在周期。
3.调用方式
静态变量只能通过“类.静态变量名”调用,类的实例不能调用;
非静态变量当该变量所在的类被实例化后,可通过实例化的类名直接访问。
4.共享方式
静态变量是全局变量,被所有类的实例对象共享,即一个实例的改变了静态变量的值,其他同类的实例读到的就是变化后的值;
非静态变量是局部变量,不共享的。
5.访问方式
静态成员不能访问非静态成员;
非静态成员可以访问静态成员。
请参考
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a564297058
2018-05-15
知道答主
回答量:2
采纳率:0%
帮助的人:1686
引用lkmj09的回答:
A窗体类:
...
//定义列表为全局静态变量
public static List<string> Data=new list<string>(100);
...

B窗体类:
...
//访问列表值
foreach (string n in aaa)
{
Console.WriteLine(A.Data[n]);
}
...

静态变量与非静态变量的区别如下:
1.内存分配
静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡;
而非静态变量需要被实例化后才会分配内存。
2.生存周期
静态变量生存周期为应用程序的存在周期;
非静态变量的存在周期取决于实例化的类的存在周期。
3.调用方式
静态变量只能通过“类.静态变量名”调用,类的实例不能调用;
非静态变量当该变量所在的类被实例化后,可通过实例化的类名直接访问。
4.共享方式
静态变量是全局变量,被所有类的实例对象共享,即一个实例的改变了静态变量的值,其他同类的实例读到的就是变化后的值;
非静态变量是局部变量,不共享的。
5.访问方式
静态成员不能访问非静态成员;
非静态成员可以访问静态成员。
请参考
展开全部
3.调用方式
静态变量只能通过“类.静态变量名”调用,类的实例也可以调用;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式