有以下程序 #include <stdio.h> int fun(int a,int b) { static int m=0, i=2; i +=m+1; m = i + a + b; return m; } main() {

admin2020-06-16  25

问题 有以下程序
#include <stdio.h>
int fun(int a,int b)
{
   static int m=0, i=2;
   i +=m+1;   m = i + a + b;
   return  m;
}
main()
{
   int  k=4, m=1, p;
   p = fun( k,m );   printf("%d,", p);
   p = fun( k,m );   printf("%d\n" ,p );
}
程序运行后的输出结果是

选项 A、8,17
B、8,16
C、8,8
D、8,20

答案A

解析 static变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:调用函数,m=0,i=2,i=i+m+1=3,m=8,返回p=8,再次调用函数,m=8,i=3,i=i+m+1=12,m=12+4+1=17,返回p=17,A选项正确。
转载请注明原文地址:https://kaotiyun.com/show/D7Cp777K
0

最新回复(0)