c 嵌套循环,内层循环只执行一次?
如题,c嵌套循环的时候,这种写法内层只执行了一次,求解!
#include <stdio.h>
void draw_box(int, int);
int main()
{
draw_box(4, 5);
return 0;
}
void draw_box(int row, int column)
{
for (; row > 0; row--)
{
for (; column > 0; column--)
{
printf("x ");
}
printf("\n");
}
}
结果中,明显换行输出了4次,但是内循环只执行了一次。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
外层循环执行完毕,要对 column 重新赋值,不然第一次循环之后 column 始终等于0,就不再继续执行了。
抱歉!我有必要重新在给你答案,因为我上面给出的答案有些错误已经不是专业不专业问题了。
drawbox函数两个形参int row,column, 实际就是drawbox的局部变量。
两个for循环的变量row和column由于在定义函数时候没有“宣告”,所以代码编译的时候,row和column不被当作for"块内"变量, 而被当作是drawbox的局部变量:int row, column;
所以for(column)这个循环执行第一周时候,column--作用在drawbox的局域变量column,所以在下一个循环的时候,for(column) 中的column由于是drawbox的column并且改写了column(等于0),所以column在后面一直等于0。
我对for循环跟一般函数对外部变量的引用有些混肴了。在给出答案前一些概念没有捋清。羞愧。。。
下面是其中一个改善方法:
for(int i=column;i>0;i--)
特别要更正的是,for循环结束时会释放它的局部变量的栈空间,假如当时for循环真有局域变量的话,在释放栈空间之后将不存在,所以不存在我第一次答案末尾对column 状态的观点,也就是如果column是for的本地变量的话,每次循环一周后,for本地的column的桟都会被“构析”,下一个循环的时候,for的column重置。
而在本例中,for(column) 初始值位置没有对column宣告,所以column不是它的本地变量,而是引用了drawbox的变量。
基本的循环知识掌握的不够好!
内部循环完成后,需要在循环前面从新赋值