关于C++中的BOOL型数组

正确代码1:#include"iostream"usingnamespacestd;boola[1001];intmain(){intn,i,b,k=0;cin>>n;f... 正确代码1:
#include "iostream"

using namespace std;
bool a[1001];
int main()
{
int n,i,b,k = 0;
cin >> n;
for(i = 1;i <= n;i++)
{
cin >> b;
a[b] = 1;
}
for(i = 1;i <= 1000;i++)
if(a[i] == 1)
k++;
cout << k << endl;
for(i = 1;i <= 1000;i++)
if(a[i]) cout << i << " ";
return 0;
}

错误代码2:
#include "iostream"

using namespace std;

int main()
{
bool a[1001];
int n,i,b,k = 0;
cin >> n;
for(i = 1;i <= n;i++)
{
cin >> b;
a[b] = 1;
}
for(i = 1;i <= 1000;i++)
if(a[i] == 1)
k++;
cout << k << endl;
for(i = 1;i <= 1000;i++)
if(a[i]) cout << i << " ";
return 0;
}

请问BOOL型的数组放在外部和里边有什么区别
展开
 我来答
xbear
推荐于2018-05-07 · 超过21用户采纳过TA的回答
知道答主
回答量:80
采纳率:33%
帮助的人:29.5万
展开全部
放在main外面是全局变量, 会在main之前被初始化. 一般的编译器会被初始化为0, 所以会成功,
第二种是局部变量, 分配在堆栈中, 是不会被初始化的, 里面的值不定, 有可能为0, 但基本不会为0, 所以当n比1000小的话, 大于n的部分因为不为0, 所以是真, 导至结果错误
HarttleLand
2011-11-27 · 超过13用户采纳过TA的回答
知道答主
回答量:47
采纳率:100%
帮助的人:28.1万
展开全部
只有这些代码的话没有区别。
外面的是全局变量,在整个应用程序周期都不会释放,别的函数也能访问。
里面的是局部变量,所在的函数调用结束就会释放。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
arongustc
科技发烧友

2011-11-27 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:5778万
展开全部
第二种在栈上分配内存,而栈内存有限,不能放大数组。前者在全局数据区分配,可以放大数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式