华为面试题解析 - 05

    05. 计算下面程序结果,并说明auto和static的区别

/*
 * exercise03.c
 *
 *  Created on: 2012-11-5
 *      Author: xiaobin
 */
#include <stdio.h>

int sum(int a)
{
	auto int c = 0;
	static int b = 3;
	c += 1;
	b += 2;

	return (a + b + c);
}

int main(int argc, char* argv[])
{
	int i;
	int a = 2;

	for (i = 0; i < 5; i++) {
		printf("%d\n", sum(a));
	}
	return 0;
}

   计算结果:
8
10
12
14
16
    auto和static的区别:

    auto对于一个程序块来说是局部的,在退出程序块时该对象将消失。如果没有使用auto保留字,或者如果使用了auto保留字,则程序块中的声明生成的都是自动存储类对象。

    static可以是某个程序块的局部对象,也可以是所有程序块的外部对象。无论是哪一种情况,在退出和在进入函数或程序块时其值将保持不变。


你可能感兴趣的:(华为面试题解析 - 05)