生手求教,c语言中 静态局部变量与静态全局变量的区别。最好有个例题说明

新手求教,c语言中 静态局部变量与静态全局变量的区别。最好有个例题说明。
新手求教,c语言中 静态局部变量与静态全局变量的区别。最好有个例题说明。
------解决思路----------------------
static int s_global;
int main(){
     static int s_local;
}

------解决思路----------------------
静态局部变量就是在局部变量前面加上static修饰,就只是修改了局部变量的生存周期,由程序运行到程序结束。

static int s_global;
int main(){
     static int s_local;
}

而static修饰的全局变量和普通的全局变量区别在于普通的全局在整个源文件都是可见的,static修饰就是限定了这个全局的作用域,变成了当前的源文件。
------解决思路----------------------
这是两种修饰变量或者函数类型static,都存在于静态存储区。
区别:作用域不同静态全局变量作用域在程序中的任何地方都是可见的;静态局部变量是从定义开始到程序结束,只在函数的内部可见。
而且加static的变量只作用于本文件。

#include <stdio.h>
#include <stdlib.h>
static int num=5;
int func()
{
   static int num=6;//屏蔽静态全局变量num而不改变它的值
   printf("%d\n",num);//输出6
   return 0;
}
int main()
{
    func();//调用函数输出6
    printf("%d",num);//输出静态全局变量num=5
    system("pause");
    return 0;
}


希望对楼主有用

------解决思路----------------------


#include <stdio.h>
#include <stdlib.h>

static int num1 = 1;    //生存期和可见性:整个程序
void fun()
{
static int num2 = 5;    //初始化:不管程序调用几次只执行一次初始化;生存期:整个程序;可见性:函数内
num2++;
printf("num2: %d\r\n", num2);
}

int _tmain(int argc, _TCHAR* argv[])
{
fun();    //输出:num2: 6
fun();    //输出:mum2: 7
printf("num1: %d \r\n", num1);    //输出:num1: 1
num1++;
printf("num1: %d \r\n", num1);    //输出: num1: 2
system("pause");
return 0;
}