0 c for-loop function nested-loops
我写了这个嵌套的"for"程序,但第二个循环只工作一次并打印一行"x"
#include <stdio.h>
void draw_box(int , int);
int main(int argc, char **argv)
{
draw_box(8 , 35);
return 0;
}
void draw_box(int row , int column)
{
for(;row>0;row--)
{
for(;column>0;column--)
printf("X");
printf("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
第二个循环只运行一次,因为它将值运行column为零,并且永远不会将其重置为作为参数传入的原始值:
for(;row>0;row--) {
int origColumn = column; // Save the value
for(;column>0;column--)
printf("X");
column = origColumn; // Restore the value
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
这说明了为什么在将作为参数传递给函数的值修改时应该非常小心.使用循环变量,您的函数将易于编写并且更易于阅读:
for(int r = 0 ; r != row ; r++) {
for(int c = 0 ; c != column ; c++)
printf("X");
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)