在所有函数外部定义的变量
发布时间:2023-05-16 13:45:37 所属栏目:语言 来源:
导读:C语言允许在所有函数的外部定义变量,这样的变量称为全局变量(Global Variable)。
全局变量的默认作用域是整个程序,也就是所有的代码文件,包括源文件(.c文件)和头文件(.h文件)。如果给全局变量加上 stati
全局变量的默认作用域是整个程序,也就是所有的代码文件,包括源文件(.c文件)和头文件(.h文件)。如果给全局变量加上 stati
|
C语言允许在所有函数的外部定义变量,这样的变量称为全局变量(Global Variable)。 全局变量的默认作用域是整个程序,也就是所有的代码文件,包括源文件(.c文件)和头文件(.h文件)。如果给全局变量加上 static 关键字,它的作用域就变成了当前文件,在其它文件中就无效了。我们目前编写的代码都是在一个源文件中,所以暂时不用考虑 static 关键字,后续我将会在《C语言多文件编程》专题中详细讲解。 【实例】定义一个函数,根据长方体的长宽高求它的体积以及三个面的面积。 #include <stdio.h> //定义三个全局变量,分别表示三个面的面积 int s1 = 0, s2 = 0, s3 = 0; int vs(int length, int width, int height){ int v; //体积 v = length * width * height; s1 = length * width; s2 = width * height; s3 = length * height; return v; } int main(){ int v = 0; v = vs(15, 20, 30); printf("v=%d, s1=%d, s2=%d, s3=%d\n", v, s1, s2, s3); v = vs(5, 17, 8); printf("v=%d, s1=%d, s2=%d, s3=%d\n", v, s1, s2, s3); return 0; } 运行结果: v=9000, s1=300, s2=600, s3=450 v=680, s1=85, s2=136, s3=40 根据题意,我们希望借助一个函数得到四份数据:体积 v 以及三个面的面积 s1、s2、s3。遗憾的是,C语言中的函数只能有一个返回值,我们只能将其中的一份数据(也就是体积 v)放到返回值中,其它三份数据(也就是面积 s1、s2、s3)只能保存到全局变量中。 C语言代码从前往后依次执行,变量在使用之前必须定义或者声明,全局变量 s1、s2、s3 定义在程序开头,所以在 vs() 和 main() 中都有效。 在 vs() 中将求得的面积放到 s1、s2、s3 中,在 main() 中能够顺利取得它们的值,这说明:在一个函数内部修改全局变量的值会影响其它函数,全局变量的值在函数内部被修改后并不会自动恢复,它会一直保留该值,直到下次被修改。 全局变量也是变量,变量只能保存一份数据,一旦数据被修改了,原来的数据就被冲刷掉了,再也无法恢复了,所以不管是全局变量还是局部变量,一旦它的值被修改,这种影响都会一直持续下去,直到再次被修改。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
