全局变量和局部变量的区别:通过调用函数举例

a.全局变量申明位置在所有代码块之外,不存储于堆栈,作用域为从申明到文件尾,如果申明为static,不允许从其他文件访问

b.局部变量申明位置在代码块起始处,存储于堆栈,作用域为整个代码块,如果申明为static,变量不存储于堆栈中,他的值在整个程序的执行期一直保持

c.形式参数申明位置在函数头部,存储于堆栈,作用域为整个函数,不允许申明为static

程序1

#include<stdio.h>

static int m;

void fun1()

{

static int n = 0;//静态局部变量

n++;

printf("n=%d\n",n);

}

void fun2()

{

    m = 0;//全局变量

m++;

printf("m=%d\n", m);

}

 

int main()

{

int i;

for (i = 0; i < 5; i++)

{

fun1();

}

return 0;

}

局部变量结果:

n=1

n=2

n=3

n=4

n=5

请按任意键继续. . .

程序2

#include<stdio.h>

static int m;

void fun1()

{

static int n = 0;//静态局部变量

n++;

printf("n=%d\n",n);

}

void fun2()

{

    m = 0;//全局变量

m++;

printf("m=%d\n", m);

}

 

int main()

{

int i;

for (i = 0; i < 5; i++)

{

/*fun1();*/

fun2();

}

return 0;

}

全局变量结果:

m=1

m=1

m=1

m=1

m=1

请按任意键继续. . .