[苏泊尔002032]函数07 – 零基础入门学习C语言38

第七章:函数07

让编程改动国际

Change the world by program

局部变量和全局变量

局部变量

在一个函数内部界说的变量是内部变量,它只在本函数规模内有用,也就是说只要在本函数内才干运用它们,在此函数以外是不能运用这些变量的。这称为“局部变量”。

不明白?看以下示例:

float f1(int a)? ?? ?? ?// 函数f1

{

? ? int b, c;? ?? ?? ???// a, b, c 有用? ?? ???

}

char f2(int x, int y)? ?// 函数f2

{

? ? int i, j;? ?? ?? ???// x, y, i, j 有用

}

void main()? ?? ?? ?? ? // 主函数

{

? ? int m, n;? ?? ?? ???// m, n 有用

}

有几点要阐明

(1) 主函数中界说的变量(m,n)也只在主函数中有用,而不由于在主函数中界说而在整个文件或程序中有用。

主函数也不能运用其他函数中界说的变量。

(2) 不同函数中能够运用相同姓名的变量,它们代表不同的目标,互不搅扰。

例如, 上面在f1函数中界说了变量b和c,倘若在f2函数中也界说变量b和c,它们在内存中占不同的单元,互不混杂。

(3) 形式参数也是局部变量。例如上面f1函数中的形参a,也只在f1函数中有用。

其他函数能够调用f1函数,但不能引用f1函数的形参a。

(4) 在一个函数内部,能够在复合句子中界说变量,这些变量只在本复合句子中有用,这种复合句子也称为“分程序”或“程序块”。

请再看下另一个示例!

void main()

{

? ? int a, b;

? ? {

? ?? ???int c;

? ?? ???c = a + b;??// c 在此规模内有用,a,b 在此规模内也有用

? ? }

}

全局变量

在函数内界说的变量是局部变量,而在函数之外界说的变量称为外部变量,外部变量是全局变量(也称全程变量)。

全局变量能够为本文件中其他函数所共用。它的有用规模为从界说变量的方位开端到根源文件完毕。

全局变量

实战演练: 剖析源码!

标题一:输入正方体的长宽高l,w,h。求体积及三个面xy,xz,y*z的面积。

源码剖析1:test1.c

标题二:有一个一维数组,内放10个学生成果,写一个函数,求出平均分、最高分和最低分。

源码剖析2:test2.c

主张不在必要时不要运用全局变量,原因如下:

① 全局变量在程序的悉数履行进程中都占用存储单元,而不是仅在需求时才拓荒单元。

② 运用全局变量过多,会下降程序的明晰性,人们往往难以清楚地判别出每个瞬时各个外部变量的值。

在各个函数履行时都或许改动外部变量的值,程序简单犯错。因而,要约束运用全局变量。

③它使函数的通用性下降了,由于函数在履行时要依赖于其地点的外部变量。

假如将一个函数移到另一个文件中,还要将有关的外部变量及其值一同移过去。

但若该外部变量与其他文件的变量同名时,就会出现问题,下降了程序的可靠性和通用性。

一般要求把C程序中的函数做成一个关闭体,除了能够经过“实参——形参”的途径与外界产生联络外,没有其他途径。

变量的存储类别

动态存储方法与静态存储方法

前面已介绍了从变量的效果域(即从空间)视点来分,能够分为全局变量和局部变量。

那么从变量值存在的时刻(即生存期)视点来分,又能够分为静态存储方法和动态存储方法。

所谓静态存储方法是指在程序运转期间由体系分配固定的存储空间的方法。

而动态存储方法则是在程序运转期间依据需求进行动态的分配存储空间的方法。

用户存储空间能够分为三部分:

程序区 静态存储区 动态存储区 在C言语中每一个变量和函数有两个特点:数据类型和数据的存储类别。

对数据型(如整型、字符型等)。存储类别指的是数据在内存中存储的方法。

存储方法分为两大类:静态存储类和动态存储类。

详细包含四种:主动的(auto),静态的(static),寄存器的(register),外部的(extern)。

依据变量的存储类别,能够知道变量的效果域和生存期。

auto变量

函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存储空间的(栈),数据存储在动态存储区中。

函数中的形参和在函数中界说的变量(包含在复合句子中界说的变量),都属此类,在调用该函数时体系会给它们分配存储空间,在函数调用完毕时就主动开释这些存储空间。

因而这类局部变量称为主动变量。主动变量用关键字auto作存储类别的声明。

int f( int a )

{

? ? auto int b, c = 3;

}

关键字auto能够省掉,auto不写则隐含定为“主动存储类别”,归于动态存储方法。

视频下载
技能, IT技能, 视频教程, C言语
发布于 2024-02-02 14:02:40
收藏
分享
海报
1
目录

    推荐阅读