静态局部变量的使用

Posted on 2012-02-19 11:30  无忧consume  阅读(719)  评论(0编辑  收藏  举报

int fun(int x[],int n)

       static int sum=0,i;
       for(i=0;i<n;i++)sum+=x[i];
       return sum;
 } 
 main()
 { 
       int a[]={1,2,3,4,5},b[]={6,7,8,9,},s=0;
       s=fun(a,5)+fun(b,4);printf("%d\n",s);
}

  解此题时,关键要理解static静态局部变量的特点;static静态局部变量在程序进行期间只能被初始化一次! 
     对于此题来说,在fun函数中有static int sum=0,i;注意,这只是表明sum是静态变量!
     执行第一次函数调用fun(a,5)时,sum的值被初始化为0,执行该次函数调用,
          sum=sum+a[0]+a[1]+a[2]+a[3]+a[4]=0+1+2+3+4+5=15;
     执行第二次函数调用fun(b,5)时,进入子函数时,由于“static静态局部变量在程序进行期间只能初始化一 次”,故sum的值在该次函数调用时,并不会被初始化为0,而是保留了第一次函数调用对它的修改值:15; 因此,执行第二次函数调用,sum=sum+b[0]+b[1]+b[2]+b[3]=45;将两次结果相加,即得s的值为60。

Copyright © 2024 无忧consume
Powered by .NET 8.0 on Kubernetes