根据代码块的定义,任何一对花括号都可构成一个代码块,代码块里用花括号括起来的复合语句当然也算一个代码块。要注意的是:
1) 代码块发生嵌套时,里层代码块的变量如果与外面的变量同名,将临时覆盖外面的变量,当这个代码块执行结束后,会恢复原先变量的值;
2) 两个独立的代码块可以用同名变量,互不影响。
3) 函数形参也具有代码块的作用,只在函数体内起作用。注意,如果在函数内重新定义了一个与形参同名的变量,则将覆盖形参。
例如:
int main(void) { int i=5; printf("###i=%d\r\n",i); for(i=0;i<3;i++) printf("***i=%d\r\n",i); printf("###i=%d\r\n",i); system("PAUSE"); return 0; }
输出结果:
###i=5
***i=0
***i=1
***i=2
###i=3
若将for(i=0;i<3;i++)改成for(int i=0;i<3;i++),则输出结果为
###i=5
***i=0
***i=1
***i=2
###i=5
程序说明:
使用for(i=0;i<3;i++)时,这个i是原有的i,所有for循环直接修改的也是原有的i。for结束时,i已变为3,所以最后输出地是###i=3
使用for(int i=0;i<3;i++)时,此时的i是一个新定义的变量,与原先的变量i同名,因此将临时覆盖原先的i,for循环中修改的也是这个临时的i。等到for循环结束后,i恢复为原来的变量,所以最后的输出是###i=5
原文:http://www.cnblogs.com/chenzhongdong/p/4730989.html