C++ 全局变量、静态全局变量和静态局部变量的异同?能结合代码详细分析一下吗?谢谢

 我来答
匿名用户
2013-09-18
展开全部
全局变量:在函数内定义的变量时局部变量,而在函数之外定义的变量称为外部变量。而外部变量是全局变量;全局变量可以为本文件中的其他函数所共用;它的有效范围从定义变量的位置开始到本源文件结束。静态局部变量:有时希望函数中的局部变量的值调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,改变量已有值了,就是上一次函数调用结束时的值。静态全局变量:有时在程序设计中希望某些外部变量(全局变量)只限于被本文引用,而不被其他文件引用。而这种不是静态存储,跟全局变量都是静态存储方式,只是作用范围不一样的,都是在编译时分配内存。
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
匿名用户
2013-09-18
展开全部
全局变量与静态全局变量的主要区别是:作用域不同.全局变量的作用域不仅在本文件中可以使用,在其他文件中也可以使用.但静态全局变量只能在本文件中使用.如假设在1.cpp里定义了一个全局变量int g_val=1;一个静态全局变量int s_val=2在2.cpp里可以正常使用g_val这个变量,但是不能访问s_val这个变量.//1.cpp#include<iostream>
using namespace std;int g_val=1;
static int s_val=2;
int main()
{
return 0;}
//2.cppextern int g_val;//要加extern关键字
extern int s_val;//虽然这个也可引用
void test()
{
g_val=0;
s_val=3;//这里访问出错.
} 静态局部变量与一般局部变量的区别就是:生存期不同静态局部变量的生存期在程序运行期间都存在,下一次会引用上次访问的值.如#include<iostream>
using namespace std;
void fun()
{
int i=0;//下一次进来的时候这步仍执行,即i又变回0
static int val=0;//只初始化一次,下一次进来这个函数的时候,val的值是引用上次的值.而不是0
val++;
i++;
cout<<"静态局部变量:"<<val<<endl;
cout<<"一般局部变量:"<<i<<endl;}
int main()
{
fun();
fun();
return 0;}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-18
展开全部
全局变量:作用域是整个文件,生存期是直到程序结束静态全局变量:作用域是当前文件,生存期是直到程序结束静态局部变量:作用域是当前的函数或者复合语句,生存是其函数执行结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-18
展开全部
上面三个类型的数据都存储在静态存储区域。不同点:全局变量在程序个工程文件中有效,静态全局变量只在定义它的文件中有效,静局部变量只在定义它的块中有效。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-18
展开全部
全局变量:/*#include "iostream.h"
int i;
int j;

#include "iostream.h"
extern int i;
extern int j;int i;
int j;
是真的定义
extern int i;
extern int j;
只是声明i,j是全局变量
一个程序中
int i;
int j;
只能出现一次
extern int i;
extern int j;
可以出现任意多次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式