C语言变量作用域

C语言变量作用域教程

我们在 C 语言 中定义一个 变量 时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。换句话说,变量的作用域指的是程序代码能够访问该变量的区域,如果超过该区域,将无法访问该变量。

C 语言中,根据定义变量的位置(有效范围),可以将变量分为局部变量和全局变量。

C语言局部变量

局部变量是指在 函数 内部定义并使用的变量,它只在函数内部有效。每个函数在执行时,系统都会为该函数分配一块 “临时内存空间”,所有的局部变量都被保存在这块临时内存空间内。

当函数执行完成后,这块内存空间就被释放了,这些局部变量也就失效了,因此离开函数之后就不能再访问局部变量了,否则解释器会抛出 NameError 错误。

C语言全局变量

和局部变量相对应,全局变量指的是能作用于函数内部和外部的变量,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。

C语言局部变量定义详解

语法

void func() { info = "HaiCoder" ... }

说明

这里的 info 变量,是定义在函数内部的,因此 info 变量就是局部变量。

C语言全局变量定义详解

语法

info = "HaiCoder" void func() { }

说明

这里的 info 变量,是定义在函数外部的,因此 info 变量就是全局变量。

案例

C语言定义局部变量

C 语言局部变量,只能用在函数中

#include <stdio.h> int printInfo() { char info[] = "HaiCoder"; printf("In function info = %s\n", info); } int main() { printf("嗨客网(www.haicoder.net)\n\n"); printInfo(); return 0; }

程序运行后,控制台输出如下:

15_C语言函数作用域.png

我们定义了一个 printInfo 函数,并且在该函数里定义了一个局部变量 info,接着,我们在函数内部打印该变量,可以正常打印。接着,我们在函数外部打印该变量,修改程序如下:

#include <stdio.h> int printInfo() { char info[] = "HaiCoder"; printf("In function info = %s\n", info); } int main() { printf("嗨客网(www.haicoder.net)\n\n"); printInfo(); printf("Outer function info = %s\n", info); return 0; }

程序运行后,控制台输出如下:

16_C语言函数作用域.png

我们在函数外部,打印函数内部的局部变量 info,程序报错,即,函数内部的局部变量不可以在函数外部访问。

C语言定义全局变量

C 语言全局变量,可以用在函数内部和外部

#include <stdio.h> char info[] = "HaiCoder"; int printInfo() { printf("In function info = %s\n", info); } int main() { printf("嗨客网(www.haicoder.net)\n\n"); printInfo(); printf("Outer function info = %s\n", info); return 0; }

程序运行后,控制台输出如下:

17_C语言函数作用域.png

我们定义了一个函数外部的全局变量 info,接着,我们分别在 printInfo 函数内部和函数外部访问该全局变量,都可以正常打印。即,函数外部的全局变量可以在函数外部和内部正常访问。

C语言变量作用域总结

我们在 C 语言中定义一个变量时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。换句话说,变量的作用域指的是程序代码能够访问该变量的区域,如果超过该区域,将无法访问该变量。

C 语言中,根据定义变量的位置(有效范围),可以将变量分为局部变量和全局变量。