int a[60][250][1000]数组的遍历面试题
发布日期:2021-06-30 10:11:54 浏览次数:3 分类:技术文章

本文共 678 字,大约阅读时间需要 2 分钟。

请问 下面程序有什么错误?
int a[60][250][1000],i,j,k; for(k=0;k<=1000;k++)	for(j=0;j<250;j++)	for(i=0;i<60;i++)		a[i][j][k]=0;

答案说是换循环语句?

int a[60][250][1000];    int i,j,k;    for(k=0;k<60;k++)        for(j=0;j<250;j++)            for(i=0;i<1000;i++)                a[k][j][i]=1;

理由是什么呢?

1.在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。

2.k<=1000也是醉了的考点!

3.栈溢出,原因是局部变量是存储在栈中的,栈的容量不足以放下这样的大数组。

于是我换成了小数组,没问题了

int a[10][10][10],i,j,k;    for(k=0;k<10;k++)        for(j=0;j<10;j++)            for(i=0;i<10;i++)                a[i][j][k]=0;

加了个static表示静态更好,放在静态存储区,也没有这个问题了。

static int a[60][250][1000],i,j,k; for(k=0;k<1000;k++)		for(j=0;j<250;j++)			for(i=0;i<60;i++)				a[i][j][k]=0;

转载地址:https://islet.blog.csdn.net/article/details/76098273 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:结构体中特殊定义int a:5
下一篇:C++各种指针声明

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月20日 03时12分46秒