|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大家好,楼主初学C语言,有些问题还望过来人不吝指教,先谢谢了。
- #include<stdio.h>
- int test(int a, int b)
- {
- static int c;
- c=a+b;
- return c;
- }
- void main()
- {
- int i,j;
- for(i=0;i<3;++i)
- j=test(1,1);
- printf("%d",j);
- }
复制代码
第一个函数test中定义了一个静态局部变量c,按说在多次调用test时,c的值是只初始化一次,以后不会再初始化。
但我用VS2010编译运行,结果一直是2,也就是说main函数中每次调用test,静态变量c每次都被初始化为0,与书中静态局部变量在运行前只初始化一次不相符。
请教大家是我哪里理解错了呢?
定义静态变量的时候可以给这个变量赋初值,静态变量赋初值的操作是在代码编译的时候实施的,不会在调用函数的时候实施。
你定义的 test() 函数完全没有用到静态变量的特性,看看我设计的 sum() 函数,用途是计算累加:
- #include <stdio.h>
- int sum(int a)
- {
- static int b = 0 ;
- b += a ;
- return b ;
- }
- int main(void)
- {
- int d , k ;
- for(k = 0 ; k < 100 ; k ++) d = sum(k + 1) ;
- printf("d = %d\n" , d) ;
- }
复制代码
|
|