怎么做
- 题面里的虚线方框就是要填的空
- 点候选项,它会填进当前高亮的那个空
- 点已填好的空,可以把选项取回来重选
- 全部填满后「提交」才会亮起
卡住了就点右下角的 👩🏫 问 AI 老师,她会给提示但不直接给答案。
static 局部变量只初始化一次
函数里每次 +5,调用三次
第 1 次
第 2 次
第 3 次
auto a
static s
5
5
5
10
5
15
变量除了「在哪儿能用」(作用域),还有「活多久」(生存期)。定义时可以在前面加存储类别:
auto:函数里的普通变量默认就是它(int a;等于auto int a;)。每次调用函数时新建、重新赋初值,函数返回就销毁。static:函数里的static int s = 0;只在第一次初始化,函数返回后也不销毁,下次调用接着用上次的值;没写初值时自动为 0。它仍然只能在这个函数里用。register:建议编译器把变量放进寄存器(用法和 auto 一样,不能用&取地址)。extern:声明「这个全局变量在别处定义」,让定义之前的代码、或别的源文件也能用它。
#include <stdio.h>
void f(void)
{
int a = 0; /* auto:每次调用重新创建、重新赋 0 */
static int s = 0; /* static:只在第一次赋 0 */
a = a + 1;
s = s + 1;
printf("a=%d s=%d\n", a, s);
}
int main(void)
{
f();
f();
f();
return 0;
}
第 3 次调用打印的是 a=【0】 s=【1】。如果把 static int s = 0; 改成 static int s;,第 1 次调用打印的 s 是【2】。
请登录后作答。
去登录
👩🏫
AI
💬 题目评论
🔒
登录并作答后可看讨论