谢谢大家

2025-05-22 11:50:30
推荐回答(1个)
回答1:

首先,很重要的一点,
不用着急,一步步来.切忌浮燥!

你这个程序,我整理了一下:
#include
main()
{
int k = 4,m = 3,p;
p = func(k,m); /* 得出p == 10 */
printf(:%d",p); /* 打印10 */
p = func(k,m); /* p = 21 */
printf("%d\n",p); /* 打印21 */
}
func(a,b)
int a,b;
{
static int m = 0,i = 2;
i += m+1; /* 第一次:i = i+(m+1) = 3 */ /* 第二次:i = i+(m+1) = 14 */
m = i+a+b; /* 第一次:m =10 */ /* 第二次:m =21 */
/*
在这里由于 i , m都是static所以的它的生命周期是整个程序的执行时间.虽然它的有效范围只限在这个函数里面.
也就是说static int m = 0,i = 2; 语句它只执行一次.
在调用完第一次的时候,i = 3 ,m = 10
*/
return(m); /* 第一次返回10 */ /* 第二次返回21 */
}

这里面需要注意的是static关键字.