zoukankan      html  css  js  c++  java
  • 22-数组与函数

    数组可以作为函数的参数使用,进行数据传送。
    数组用作函数参数有两种形式:一种是把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参和实参使用。
    1、数组元素作为函数实参
    数组元素就是下标变量,它与普通变量并无区别。因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传给形参,实现单向的值传递。

    思考&实现1:

    判别一个整数数组中各元素的值,若大于0 则输出该值,若小于 等于0则输出0值(判断过程使用函数实现) 

    
    
     1 #include <stdio.h>
     2 void test(int a)
     3 {
     4     if(a > 0)
     5     {
     6         printf("%d ", a);
     7     }
     8     else
     9     {
    10         printf("%d ", 0);
    11     }
    12 }
    13 int main(int argc, const char * argv[])
    14 {
    15     int a[5];
    16     printf("请输入5个数:
    ");
    17     for(int i = 0; i < 5; i++)
    18     {
    19         //接收用户输入的数并存放在数组a[5]中
    20         scanf("%d", &a[i]);
    21         
    22     }
    23     for(int i = 0; i < 5; i++)
    24     {
    25         test(a[i]);
    26     }
    27     return 0;
    28 }
    
    

    2、数组名作为函数参数

    用数组名作函数参数与用数组元素作实参有几点不同

    (1) 用数组元素作函数参数不要求形参也必须是数组元素,但是用数组名作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组。

    (2)数组名作为函数的参数,实际上是把数组的地址赋值给形参变量,实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。

    (3)在变量作函数参数时,所进行的值传送是单向的。即只能从实参传向形参,不能从形参传回实参。形参的初值和实参相同,而形参的值发生改变后,实参并不变化, 两者的终值是不同的。 

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

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

    (2)形参数组和实参数组的长度可以不相同,因为在调用时,只传送首地址而不检查形参数组的长度。当形参数组的长度与实参数组不一致时,虽不至于出现语法错误(编译能通过),但程序执行结果将与实际不符,这是应予以注意的。

      (3)在函数形参表中,允许不给出形参数组的长度,或用一个变量来表示数组元素的个数。例

    如,可以写为:
    

      void nzp(int a[]) 或写为

      void nzp( int a[], int n )

      其中形参数组a没有给出长度,而由n值动态地表示数组的长度。n的值由主调函数的实参进行传送。

      (4) 多维数组也可以作为函数的参数。在函数定义时对形参数组可以指定每一维的长度,也可省第一维的长度。因此,以下写法都是合法的:

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

    人生之路,不忘初心,勿忘始终!
  • 相关阅读:
    linux 内核防火墙配置规则
    postfix 配置邮件服务器
    JDK 和 tomcat 安装 配置
    ifstat-网络接口监测工具
    一个比较通用的Makefile
    [转]vim常用命令
    [转]Valgrind简单用法
    [转]UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching)
    [转]Reed Solomon纠删码
    [转]分布式文件系统FastDFS架构剖析
  • 原文地址:https://www.cnblogs.com/xdl745464047/p/4003791.html
Copyright © 2011-2022 走看看