gpt4 book ai didi

c - 静态变量和本地

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:01 25 4
gpt4 key购买 nike

输出是:100 -10 0 100 -5 2 10。为什么?在第一次运行 b() 之后,b() 末尾的静态 x 是 -5(我检查过)那么为什么 c() 给出 0,它不是使用静态 x 吗?

#include <stdio.h>
extern int x;
void a()
{
int x=100;
printf("% d ",x);
x+=5;
}
void b()
{
static int x=-10;
printf("%d ",x);
x+=5;

}
void c()
{

printf("%d ",x);
x+=2;
}
int main()
{
int x=10;
a();
b();
c();
a();
b();
c();
printf("%d ",x);
return 0;
}
int x=0;

最佳答案

void c()
{

printf("%d ",x);
x+=2;
}

它不会使用您在定义函数 b() 中分配的 x 的静态副本。

它将使用您在程序最后一行中声明的变量 x 的全局副本。

int x=0;

将 x 的最后一行更改为不同的值,c() 的输出将更改


为什么是全局的而不是静态的?

所以这里的静态变量 x 的范围仅限于 b() 的主体,所以在 c() 中不能使用它。

c() 依赖于 x 的全局副本。如果您删除 x 的全局定义,那么在 C() 中它将给出编译错误。

关于c - 静态变量和本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35033258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com