static int

#include<stdio.h>
int & f()
{
static int i=2;
return ++i;
}
int g()
{
int j=2;
return ++j;
}
void main()
{
int &ri=f();
int rj=g();
f();
rj=g();
printf("ri=%d,rj=%d",ri,rj);
}
输出:ri=4,rj=3

而去掉“static int i=2”中的static 其输出结果是 ri=3,rj=3
为什么??

因为static变量也就是静态变量,在程序运行过程中被声明后就会一直保存在内存里,所以只能声明一次,第二次再访问那个函数时,给静态变量声明同时赋值的语句就不再执行了,而静态变量的值始终保存在内存里,也就是上次改变以后的值。

没有static修饰的函数中的变量,只在函数被执行时占用内存,函数执行完毕后就被销毁,数据也就不存在了,所以每次都要声明,值也就不会变。

static int n; //定义静态全局变量

改为

int n; //定义全局变量

再次编译运行程序,细心体会全局变量和静态全局变量的区别。

注意:全局变量和全局静态变量的区别

全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。

以上内容参考:百度百科-static

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-28
原因在
static
int
k=1;
static
等于全局量,退出函数func,k
值保留更新后的值
不变。
func(3);
使
k
等于
6,退出函数func,k
值保留6不变。
func(5);
进入函数,k
初值为
6,不是
1
,执行:
6*5*4*3*2*1

720
第2个回答  推荐于2017-09-01
因为static变量也就是静态变量,在程序运行过程中被声明后就会一直保存在内存里,所以只能声明一次,第二次再访问那个函数时,给静态变量声明同时赋值的语句就不再执行了,而静态变量的值始终保存在内存里,也就是上次改变以后的值。
没有static修饰的函数中的变量,只在函数被执行时占用内存,函数执行完毕后就被销毁,数据也就不存在了,所以每次都要声明,值也就不会变。本回答被提问者采纳

为何static int是int, int不可以吗?
1、static int :存在不依赖与于任何类对象的存在,类的静态数据成员应该在代码中被显式地初始化 2、int:int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]。三、创建方式不同 1、static int :属于整个类,即使没有任何对象创建,类的静态数据成员变量也存在。2、int:属于...

static int和int区别
在C语言中,static int和int有着不同的含义和用途。int是用于定义整数类型变量的标识符。它表示变量存储的是整数值,可以使用范围内的所有整数。static int是用于定义静态整型变量的关键字。静态整型变量在程序执行期间会一直存在,不会因为函数调用结束或者程序流程跳出当前作用域就被销毁。此外,静态整型变...

static int是什么意思
static是静态的意思,int是定义整型变量,加一起就是定义一个静态整型变量。

static int的值会变吗?
值不会变。因为static变量也就是静态变量,在程序运行过程中被声明后就会一直保存在内存里,所以只能声明一次,第二次再访问那个函数时,给静态变量声明同时赋值的语句就不再执行了,而静态变量的值始终保存在内存里,也就是上次改变以后的值。没有static修饰的函数中的变量,只在函数被执行时占用内存,函...

在一个函数中定义一个变量为static int,是什么意思?
一个静态成员变量,将来需要用类来访问。一般此变量在整个程序运行期间不变时定义成这样。

Java中看到static int i;一个语句,请问static在这里的作用是什么啊...
static是类加载的时候最先被初始化的,并且只被初始化一次,你那个题是用i做的累加功能,结果应该是0 1 2 3如果不加static是用这个i的时候必须要new一下ForTest 然后ForTest.i 才能使用

static int a 和 int a是什么区别
1、static int a:静态变量不单单仅仅只是属于某一个对象的,而是属于类的,所以静态变量会被该类的所有对象共享,也就是说所有该类的对象使用的是同一份数据。2、 int a:仅仅变量a自己享有一份数据。三、变量访问方式不同 1、static int a:通过类名.静态成员变量名方式访问。2、 int a:直接使用...

static int c=3 什么意思?
static是静态修饰符 int整型修饰符 整体的意思是静态的整型变量C,初始值是3 定义一个整型变量,存放的数据是3,这个变量是全局变量,就是说整个程序都可以使用,程序结束前它占用的空间都不会被释放掉。

static int
总结:静态变量(如 static int n;)与普通全局变量的主要区别在于内存管理和生命周期。静态变量在程序启动时创建,且在整个程序运行期间保持存在,无需每次函数调用时重新声明。当你在函数中声明并赋值静态变量时,初次赋值后,后续函数调用将不会再重新初始化,其值保持上次修改后的状态。相比之下,非...

static int x=0;和static int x;x=0;为什么不一样呢?
)x = 0; \/\/ 初始化 如果加了static :static int x = 0; \/\/ 声明并初始化(此时为初始化赋值,如果这条语句出现在函数中,即便被多次调用,也只会执行一次。)static int x; \/\/ 声明并使用默认初始化值 \/\/ 在此期间访问会得到静态变量的系统默认值(int型为0)x = 0; \/\/ 赋值为0 ...

相似回答