c中的外部/全局变量

  • 本文关键字:全局变量 外部 c
  • 更新时间 :
  • 英文 :


我正在学习C语言中的全局变量。

下面是书中给出的一个例子,为什么对多个函数使用相同的全局变量是坏主意。我不明白为什么函数print_all_rows只执行函数print_one_row一次。

假设我先调用函数print_one_row,然后调用函数print_all_rows。在程序开始时,i被编译器默认设置为0。程序执行完print_one_row函数后,i的值为11。

程序进入函数print_all_rows,设置i为1,调用函数print_one_row,然后i递增为12而不是2.

如果我将i的值更改为1,为什么将i增加到12而不是2 ?

int i;
void print_one_row(void)
{

for (i = 1; i <= 10; i++)
printf ("*" ) ;
}
void print_all_rows(void) {

for (i = 1; i <= 10; i++) {
print_one_row();
printf ("n") ;
}
}

print_all_rows中,就在第一次调用print_one_row之前,i的值为1。

则调用print_one_row。当该函数返回时,i的值为11。然后计算print_all_rows中的循环增量,使i从11增加到12,然后计算条件为假,然后返回print_all_rows

因为i是glocal变量(对于两个函数都是通用的),并且在第一次调用print_one_row之后它的值是11。有了这个值(11),print_all_rows中的for循环的第二次迭代退出,不再调用print_one_row

最新更新