#include<stdio.h>
int sum(int a)
{
int c = 0;
static int b = 3;
c += 1;
b += 2;
return (a + b + c);
}
int main()
{
int i;
int a = 2;
for (i = 0; i < 5; i++)
{
printf("%d ", sum(a));
}
return 0;
}
第一个作业如图所示,那么代码最后的a的值是多少呢?
这个代码主要难点在static的判断,最后运行结果为 a = 8 10 12 14 16
我们通过一段代码复习一下static对于变量上的一种使用:
#include <stdio.h>
void count();
int main(void)
{
int i = 0;
for (i = 0; i <= 5; i++)
{
count();
}
return 0;
}
void count()
{
/*声明一个静态局部变量*/
static num = 0;
num++;
printf("%d\n", num);
}
通过运行这段代码,我们可以得到num = 1 2 3 4 5 6
由于在函数count();里设置了static num,因此num被称为静态局部变量,这样使得它只被赋予了初值零,在随后调用它时,都不会再次赋予它零,而是保留上次调用后的值。
我这个小白表达可能很垃圾,贴个网上查到的解释,我觉得真棒:
因为静态局部变量是在编译时赋初值的,且只赋初值一次,在程序运行时它已有初值。以后在每次调用函数时就不再重新赋初值,而是保留上次函数调用结束时的值。
那么通过这个例子,上面的答案就呼之欲出了,不做其他分析!
第二个经典习题:写一段代码,将三个数从大到小输出