(资料图)
1、这个主要考察变量的作用域对于inta=1这句中的a作用域是最大的,是整个.c文件,首先要明白,当这个a的作用域中的其他地方出现同名变量定义时,这个作用域比较大的变量失效,也就是说在一个小的作用域中要使用出现在这个作用域中的那个同名变量。
2、这个用语言很难表达清楚,看下面的解释应该能明白的。
3、对于f函数中定义的静态inta,它的作用域是f函数,在f函数中出现a时都是使用这个变量,方便区别,我们称它为a1而对于main函数中出现在for循环中的a,它的作用域是for循环,也就是说在这个for循环中使用到的a都是这个变量。
4、方便起见,我们称它为a2首先,从main函数开始执行,进入for语句,i=0;第一次的for循环相当于:inta2=3;k+=f(3);此时进入函数f,在函数f中,c=3,这里函数f的执行相当于:a1=2;c=4;return(2++)+4这里2++返回2,所以整体返回6,也就是k=6;返回之后a1变成3再次进入for循环,i=1;第二次的for循环相当于:inta2=3;k+=f(3);此时再次进入函数f,在函数f中,c=3,由于函数f中定义的a1是一个静态变量,所以在上次f中修改的a1的值这次进入时仍然保持为修改过后的值,而不会像非静态变量一样在上次离开函数f后丢失,再次进入时重新分配成原始值。
5、第二次f函数相当于:a1=3;c=4;return(3++)+4返回7;这时k变成是7+6=13再次进入循环,i=2,不符合循环条件,循环结束最后执行k+=a,这里才会用到作用范围最大的inta=1的这个变量所以最后的结果是14。
本文就为大家分享到这里,希望小伙伴们会喜欢。