c语言程序阅读问题!急
发布网友
发布时间:2023-10-24 22:13
我来回答
共5个回答
热心网友
时间:2024-12-03 10:40
呵呵,要是s前面不加static修饰,结果当然就会是111,但加上后,就变成了123,
原因在于静态局部变量改变了变量的生存期.局部变量是存储在栈中,但静态局部变量是存储在静态内存区,作用域是整个程序,所以函数每次被调用,对静态局部变量,不会再对他初始化,它可以记录函数的调用次数.
但它的作用域没变,在函数体外还是不能引用它,
热心网友
时间:2024-12-03 10:40
s没定义.
static int s=0;
表示静态变量,程序运行完后,仍在内存中,
第一次incr();s=1,输出1
第2次incr();s=2,输出2
第3次incr();s=3,输出3
热心网友
时间:2024-12-03 10:41
静态变量s初始为0,每执行一句incr();把s加1再输出
因为s 定义为静态变量,第一次执行incr();后s变为1,第二次执行incr();时,s 就是1不是0,执行后变为2~~~~重点就在静态变量~
热心网友
时间:2024-12-03 10:41
输出123
static定义的s每次值变化都会保存的
第一次调用incr();后s=1(也就是第二次调用incr();的初值
以此类推,输出123
热心网友
时间:2024-12-03 10:42
#include "stdio.h"
void incr()
{
static s=0; //static 类型只初始化一次
++s;
printf("%d\n",s);
}
main()
{
incr(); //s=1
incr(); //由于s为static,s的值仍为1,现在++s后变成2
incr(); //3 解释同上
}