c语言中全局变量及输出问题?
#include<stdio.h>voidf(void){staticinta=3;staticintb;intc;++a;++b;++c;printf("a=%d\n"...
#include <stdio.h>
void f(void)
{
static int a = 3;
static int b;
int c;
++a; ++b; ++c;
printf("a=%d\n", a);
printf("b=%d\n", b);
printf("c=%d\n", c);
}
int main(void)
{
f();
f();
f();
}
输出结果a:4,5,6
b:1,2,3
c:1,2,3
去掉static:a:4,4,4
b:4195353,4195353,4195353
c:1, 2, 3
求高手指点,回答满意会追加赏金 展开
void f(void)
{
static int a = 3;
static int b;
int c;
++a; ++b; ++c;
printf("a=%d\n", a);
printf("b=%d\n", b);
printf("c=%d\n", c);
}
int main(void)
{
f();
f();
f();
}
输出结果a:4,5,6
b:1,2,3
c:1,2,3
去掉static:a:4,4,4
b:4195353,4195353,4195353
c:1, 2, 3
求高手指点,回答满意会追加赏金 展开
展开全部
函数内部的static的变量不会被释放
static int a;
int b;
void func(void)
{
static int c;
int d;
}
在这里,a与b都是全局变量,二者的区别是,b可以被别的文件使用,a只能在本文件中使用,这是static对全局变量的作用。
c和d的区别是,d是一个自动变量,func函数执行完后,d会自动被释放。但c却不会被释放,下一次调用func函数时,c的值会保留上次的值继续使用。
static int a;
int b;
void func(void)
{
static int c;
int d;
}
在这里,a与b都是全局变量,二者的区别是,b可以被别的文件使用,a只能在本文件中使用,这是static对全局变量的作用。
c和d的区别是,d是一个自动变量,func函数执行完后,d会自动被释放。但c却不会被释放,下一次调用func函数时,c的值会保留上次的值继续使用。
追问
我的哪个c为什么是1,2,3呢?
展开全部
static 变量 具有初值0,且在函数中的值会保存
不加static是auto变量,每次函数调用都是新的变量,不会默认分配初始值
在函数f中a有初值3,加static b,c有初值 0,每次函数调用 ++a,++b,++c,a,b,c的值都增加1
没有static,每次函数调用 中 a有初值3,++a a=4 ,b,c无初值,其值不确定
不加static是auto变量,每次函数调用都是新的变量,不会默认分配初始值
在函数f中a有初值3,加static b,c有初值 0,每次函数调用 ++a,++b,++c,a,b,c的值都增加1
没有static,每次函数调用 中 a有初值3,++a a=4 ,b,c无初值,其值不确定
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
static定义静态变量 然后会初始化为0 ,static只会初始化一次,这个就是为什么a的值会是4,5,6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |