首页 > 编程笔记 > C语言笔记 阅读:28

C语言局部变量和全局变量的区别(附带实例)

形参变量在函数被调用时才分配内存空间,调用结束后立即从内存中释放,当再次调用函数时重新从内存申请空间。这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。

所谓作用域,就是变量的有效作用范围。不仅是形参变量,C语言中所有的变量都有自己的作用域。决定变量作用域的是变量的定义位置。

C语言局部变量

在函数(代码块)内部定义的变量称为局部变量(函数的形参也是局部变量),其作用域从定义变量的那一行开始,直到函数(代码块)结束。

【实例 1】局部变量作用范围。代码如下:
#include <stdio.h>
 
int fun(int i_x, int i_y)
{
    int i_sum; //函数中的局部变量
 
    i_sum=i_x+i_y; //形参也是局部变量,只在该函数里有效
}
 
int main()
{
    int i_m=1, i_n=2, i_sum;
    i_sum=fun(i_m, i_n);
    printf("sum is %d", i_sum);
 
    return 0;
}
在这个函数里,变量 i_sum 定义在函数的开头,所以它是局部变量,其作用域就在这个函数中,出了这个函数,就会被自动销毁,无法被其他函数引用。

在主函数中定义的变量 i_m, i_n 也只在主函数中有效,并不会因为在主函数中定义而在整个文件或项目中有效,主函数也不能使用在其他函数中定义的变量。

在不同的函数中可以使用同名的变量,它们代表不同的对象,互不干扰,如 fun() 函数里面的 i_sum 和 main() 函数中的 i_sum,虽然同名,但代表两个不同的对象,在内存中通过不同的地址存储。形参也是局部变量,只在该函数里有效。

C语言全局变量

全局变量(又称为外部变量)是在函数外面定义的变量。作用域从定义变量的那一行开始,直到文件结尾(能被后面的所有函数使用)。

程序一启动就会为全局变量分配内存空间,程序退出时才会被销毁。全局变量在程序的全部执行过程中都占用内存空间,而不是仅在需要时才占用内存空间。

全局变量默认初始值为 0,而局部变量没有初始值。

全局变量使函数的通用性降低,如果在函数中引用了全局变量,那么执行情况会受到有关的外部变量的影响。

【实例 2】全局变量作用范围。代码如下:
#include <stdio.h>
 
int i_sum; //全局变量
 
void fun(int i_x,int i_y)
{
    i_sum=i_x+i_y;
}
 
int main()
{
    int i_m=1,i_n=2;
 
    fun(i_m,i_n); //调用函数
    printf("sum is %d",i_sum);
 
    return 0;
}
总的来说,定义在函数内部的变量为局部变量,定义在函数外部的变量为全局变量。

相关文章