问题
单项选择题
有以下函数#include viod fun(int *s){staic int j=0;do {s[j]=s[j]+s[j+1];} wihle(++j<2);}main(){int k,a[10]={1,2,3,4,5};for(K+1;k<3;k++) fun(a); for(K+1;k<5;k++) printf(“%d”,a[k]);printf(“\n”);}程序运行输出结果是( )。
A.12345
B.23445
C.34756
D.35745
答案
参考答案:D
解析:【解析】考察静态局部变量,静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量在函数内定义,它的生存期为整个源程序。 (2)静态局部变量只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。 (3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。 (4) 根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。 根据这个特点,函数第一次调用时,会将数组a变为35345,当第二次调用时,函数内的j值为2,所以会将数组a的第三个元素更改为7,所以最终结果为35745,选项D)正确。