c语言中static 到底有啥作用啊?
举个程序来说#include<stdio.h>intf(intx){staticinta=3;a+=x;returna;}voidmain(){intk=2,m=1,n;...
举个程序来说
#include <stdio.h>
int f(int x)
{
static int a=3;
a+=x;
return a;
}
void main ()
{
int k=2,m=1,n;
n=f(k);
n=f(m);
printf("%d",n);
}
我想知道 走n=f(m)的时候
那个 static int a=3; 不生效?a为什么还是 n=f(m)之后得的结果呢?
讲讲这个就行,我要考试~ 展开
#include <stdio.h>
int f(int x)
{
static int a=3;
a+=x;
return a;
}
void main ()
{
int k=2,m=1,n;
n=f(k);
n=f(m);
printf("%d",n);
}
我想知道 走n=f(m)的时候
那个 static int a=3; 不生效?a为什么还是 n=f(m)之后得的结果呢?
讲讲这个就行,我要考试~ 展开
5个回答
展开全部
声明成static跟声明在函数体外面是差不多的(当然可见性上是不同的)
如果你是看那句里面的等号不顺眼, 这是因为, c里等号的意义是分两种情况的,一种是在表达式里, 而另一种是在变量声明中。 在变量声明中的等号不可以看作是赋值, 它只是初始化,也就是说它的意义只是告诉编译器如何初始化这个内存空间。 所以虽然这句写在这里,但是多次运行这个函数的时候并不会进行多次的赋值. 而下面的 +=这里面就是赋值的意思了,每次都会运行的。 简单的说, 对声明语句要特殊看待。
如果你是看那句里面的等号不顺眼, 这是因为, c里等号的意义是分两种情况的,一种是在表达式里, 而另一种是在变量声明中。 在变量声明中的等号不可以看作是赋值, 它只是初始化,也就是说它的意义只是告诉编译器如何初始化这个内存空间。 所以虽然这句写在这里,但是多次运行这个函数的时候并不会进行多次的赋值. 而下面的 +=这里面就是赋值的意思了,每次都会运行的。 简单的说, 对声明语句要特殊看待。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
static是静态声明,用static声明的变量生存期比普通变量长,因此f()函数多次运行静态变量的值一直存在
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是对的吗,得出n=6,如果不是static ,则n=4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询