关于这道题
为什么设置静态局部变量和外部变量?
能讲解一下这道题吗
2015-08-23
函数中变量前加上static,这个叫局部静态变量,这个变量在整个程序中只有一份,在多次函数调用中可以保留它的值。
你可以看到,在for循环中调用了5次fn函数,但每次x的值都不一样:第一次调用时x的值是1(就是定义的值),接着值被乘以2,成为2,打印了出来。在第二次调用时,前次的2被保留下来了,所以第二次输出了4。第三次输出了4*2=8......,因为实际上每次函数存取的x都是同一份,所以值才会被保留下来。
如果在fn函数定义x时没有加上static,那么每一次调用fn时x的值都是1,最后打印出来的都是2。实际上每次调用时使用的x都是自己的那一个,所以值不能共享。
而main函数中的那个并不是变量定义,那只是一句声明:声明了一个外部变量x。也就是告诉编译器“有一个变量叫x,但并没有定义在这里”,这样你就可以在代码中使用这个x(C要求所有符号在使用前必须声明)。随后编译器在这个代码中找到了x的定义(最后一行),所以前面那个x就当成是这个值为100的x了。
举报