字体
第(1/6)页
关灯
   存书签 书架管理 返回目录
    b are:\n");

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

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

    }

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

    本程序中函数 nzp 的形参为整数组 a,长度为 5。主函数中实参数组 b 也为整型,长度

    也为 5。在主函数中首先输入数组 b 的值,然后输出数组 b 的初始值。然后以数组名 b 为实

    参调用 nzp 函数。在 nzp 中,按要求把负值单元清 0,并输出形参数组 a 的值。 返回主函

    数之后,再次输出数组 b 的值。从运行结果可以看出,数组 b 的初值和终值是不同的,数组

    b 的终值和数组 a 是相同的。这说明实参形参为同一数组,它们的值同时得以改变。

    用数组名作为函数参数时还应注意以下几点:

    a. 形参数组和实参数组的类型必须一致,否则将引起错误。

    b. 形参数组和实参数组的长度可以不相同,因为在调用时,只传送首地址而不检

    查形参数组的长度。当形参数组的长度与实参数组不一致时,虽不至于出现语

    法错误(编译能通过),但程序执行结果将与实际不符,这是应予以注意的。

    【例 8.10】如把例 8.9 修改如下:

    void nzp(int a[8])

    {

    int i;

    printf("\nvalues of array aare:\n");

    for(i=0;i<8;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);

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

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

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

    }

    本程序与例 8.9 程序比,nzp 函数的形参数组长度改为 8,函数体中,for 语句的循环

    条件也改为 i<8。因此,形参数组 a 和实参数组 b 的长度不一致。编译能够通过,但从结果

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

    看,数组 a 的元素 a[5],a[6],a[7]显然是无意义的。

    c. 在函数形参表中,允许不给出形参数组的长度,或用一个变量来表示数组元素

    的个数。

    例如,可以写为:

    void nzp(int a[])

    或写为

    void nzp(i
上一章 目录 下一页