📜  C |变量声明和范围|问题2(1)

📅  最后修改于: 2023-12-03 14:39:39.991000             🧑  作者: Mango

C变量声明和范围问题

问题2

在函数中定义的局部变量与在函数外定义的全局变量有何区别?

1. 局部变量

在函数中定义的变量为局部变量,其作用域限制在声明的函数内部。在函数内部,可以通过变量名使用局部变量。

#include <stdio.h>

int main(){
    int a = 1; // 在 main 函数中定义了一个局部变量 a
    printf("%d\n", a); // 输出 1
    return 0;
}
2. 全局变量

在函数外部定义的变量为全局变量,其作用域可以扩展到整个程序。在程序中任何一个函数都可以通过变量名使用全局变量。

#include <stdio.h>

int a = 1; // 在函数外部定义了一个全局变量 a

int main(){
    printf("%d\n", a); // 输出 1
    return 0;
}
3. 区别

局部变量的作用域局限于函数内部,只能在函数内部使用;全局变量的作用域可以扩展到整个程序,任何函数都能使用。

局部变量只在函数的执行期间存在,函数结束时会销毁;全局变量直到程序运行结束才会销毁。

局部变量可以在函数内定义初始化,也可以不初始化;全局变量必须在文件外定义初始化,否则默认为0。

4. 注意事项

在函数中定义的变量名称与全局变量名称相同,函数中使用的变量为局部变量,而非全局变量,这是因为函数中的局部变量具有更高的作用域优先级。

#include <stdio.h>

int a = 1; // 在函数外部定义了一个全局变量 a

int main(){
    int a = 2; // 在 main 函数中定义了一个局部变量 a
    printf("%d\n", a); // 输出 2
    return 0;
}
总结

函数内定义的变量为局部变量,作用域只限于函数;函数外定义的变量为全局变量,作用域可以扩展到整个程序。在函数中定义的变量名称与全局变量名称相同时,函数中使用的是局部变量。局部变量的作用域在函数执行期间,全局变量的作用域扩展到整个程序周期。