#include
int k; //全局变量k, 默认初始值为0
main()
{ int i=4; //局部变量i, 初始值为4
fun(i); //因为是局部变量值传递,所以函数调用完后i的值不受影响, 这一句过后i还是4
printf(“(1)%d,%d\n”,i,k);} //所以i=4, k的值会被fun()修改为4
fun(int m)
{ m+=k;k+=m; //前边说过,k初始为0, 所以m = 4, k = 4, 因为k是全局变量,所以在fun()内修改后,fun()外也受影响.
{ char k=’B’; //这是一个被{} 包括的代码段,在这里定义的k是指在这段中村在的局部变量, 值为B
printf(“(2)%d\n”,k-‘A’); //B-A = 1
}
printf(“(3)%d,%d\n”,m,k); //这里的k是全局变量,被m+=k;k+=m; 修改过为4, 而m是参数,是4.
}
你首先需分清全局变量和局部变量,程序中的K是全局变量,它的值不会因为分块程序所改变,分块程序就像被调函数,当执行完后即刻消失,所以(2) 为1,但K值依然是4