字体
第(2/6)页
关灯
   存书签 书架管理 返回目录
nt a[],int n)

    其中形参数组 a 没有给出长度,而由 n 值动态地表示数组的长度。n 的值由主

    调函数的实参进行传送。

    由此,例 8.10 又可改为例 8.11 的形式。

    【例 8.11】

    void nzp(int a[],int n)

    {

    int i;

    printf("\nvalues of array a are:\n");

    for(i=0;i
    {

    if(a[i]<0) a[i]=0;

    printf("%d ",a[i]);

    }

    }

    main()

    {

    int b[5],i;

    printf("\ninput 5 numbers:\n");

    for(i=0;i<5;i++)

    scanf("%d",&b[i]);

    printf("initial values of array b are:\n");

    for(i=0;i<5;i++)

    printf("%d ",b[i]);

    nzp(b,5);

    printf("\nlast values of array b are:\n");

    for(i=0;i<5;i++)

    printf("%d ",b[i]);

    }

    本程序 nzp 函数形参数组 a 没有给出长度,由 n 动态确定该长度。在 main 函数中,函

    数调用语句为 nzp(b,5),其中实参 5 将赋予形参 n 作为形参数组的长度。

    d. 多维数组也可以作为函数的参数。在函数定义时对形参数组可以指定每一维的

    长度,也可省去第一维的长度。因此,以下写法都是合法的。

    int MA(int a[3][10])

    或

    int MA(int a[][10])。

    8.8 局部变量和全局变量

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    在讨论函数的形参变量时曾经提到,形参变量只在被调用期间才分配内存单元,调用结

    束立即释放。这一点表明形参变量只有在函数内才是有效的,离开该函数就不能再使用了。

    这种变量有效xìng的范围称变量的作用域。不仅对于形参变量,C语言中所有的量都有自己的

    作用域。变量说明的方式不同,其作用域也不同。C语言中的变量,按作用域范围可分为两

    种,即局部变量和全局变量。

    8.8.1 局部变量

    局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内,

    离开该函数后再使用这种变量是非法的。

    例如:

    int f1(int a)        /*函数 f1*/

    {

    int b,c;

    ……

    }

    a,b,c 有效

    int f2(int x)        /*函数 f2*/

    {

    int y,z;

   
上一页 目录 下一页