/*
用static声明一个变量的作用是:
1.对局部变量用static声明,把它分配在静态存储区,该变量在整个程序执行期间不释放,其所分配的空间始终存在。常使用静态局部变量在函数调用间歇保存某些变量的值。
2.对全局变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)
*/
#include<stdio.h>
#include<stdlib.h>
void go()
{
for (int i = 0; i < 10; i++)
{
int num = 0; //局部变量,每次块语句结束,就自动回收,然后重新分配
//每次的值都为0
static int data = 0; //静态局部变量,,始终在内存,一旦定义初始化,即使再次执行初始化的语句,也仅仅只执行一次初始化。
// 生命周期一直沾着内存,与程序共存亡。
printf("%p,%p\n", &num, &data); //输出地址
num += i; //num=num +i;
data = data + i;
printf("\n");
}
//下面我们就来看一下,num和data的生命周期有什么特点呢?
}
void main()
{
go();
system("pause");
}
用static声明一个变量的作用是:
1.对局部变量用static声明,把它分配在静态存储区,该变量在整个程序执行期间不释放,其所分配的空间始终存在。常使用静态局部变量在函数调用间歇保存某些变量的值。
2.对全局变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)
*/
#include<stdio.h>
#include<stdlib.h>
void go()
{
for (int i = 0; i < 10; i++)
{
int num = 0; //局部变量,每次块语句结束,就自动回收,然后重新分配
//每次的值都为0
static int data = 0; //静态局部变量,,始终在内存,一旦定义初始化,即使再次执行初始化的语句,也仅仅只执行一次初始化。
// 生命周期一直沾着内存,与程序共存亡。
printf("%p,%p\n", &num, &data); //输出地址
num += i; //num=num +i;
data = data + i;
printf("\n");
}
//下面我们就来看一下,num和data的生命周期有什么特点呢?
}
void main()
{
go();
system("pause");
}