zoukankan      html  css  js  c++  java
  • 数组名作为函数参数

    例:

    #include <stdafx.h>
    #include<stdio.h>
    
    void f(int arr[],int n)
    {
        ……
    }
    void main()
    {
        int array[10];
        ……
        f(array 10);
    }
    f(int arr[],int n)

    在编译时是将arr按指针变量处理的,相当于将函数f的首部写成f(int *arr,int n);

    说明:C语言调用函数时采用“值传递”方式,当用变量名作为函数参数时传递的是变量的值,当用数组名作为函数参数时,由于数组名代表的是数组首元素地址,因此传递的是地址,所以要求形参为指针变量。

    例:将数组a中的n个整数按相反顺序存放。

    #include <stdafx.h>
    #include<stdio.h>
    
    void reverse(int x[],int n);
    void main()
    {
        int i,a[10]={1,2,3,4,5,6,7,8,9,0};
        printf("The original arry:
    ");
        for(i=0;i<10;i++)
        {
            printf("%6d",a[i]);
        }
        printf("
    ");
        reverse( a,9);
    }
    void reverse(int x[],int n)
    {
        int i;
        for(i=n;i>=0;i--)
        {
            printf("%6d",x[i]);
        }
    }

    用指针做参数

    #include <stdafx.h>
    #include<stdio.h>
    
    void reverse(int *p,int n);
    void main()
    {
        int i,a[10]={1,2,3,4,5,6,7,8,9,0},*p;
        printf("The original arry:
    ");
        for(i=0;i<10;i++)
        {
            printf("%6d",a[i]);
        }
        p=a;
        printf("
    ");
        reverse( p,9);
    }
    void reverse(int *p,int n)
    {
        int i;
        for(i=n;i>=0;i--)
        {
            printf("%6d",*(p+i));
        }
    }

    若有一个实参数组,想在函数中改变此数组中的元素的值,实参与形参的对应关系有以下4中情况。

    (1)形参和实参都用数组名。

    例:

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[10];
       f(a,10) ; } void f(int x[],int n) { …… }

    (2)实参用数组名,形参用指针变量。

    例:

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[10]; 
       f(a,10) ; } void f(int *a,int n) { …… }

    (3)实参形参都用指针变量。

    例:

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[10],*p=a ;//此处*为定义p为指针变量。  
    f(p,10); } void f(int *x,int n) { …… }

    (4)实参为指针变量,形参为数组名。

    例:

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[10], *p=a ;//此处*为定义p为指针变量
        f(p,10);
    }
    void f(int x[],int n)
    {
        ……
    }
  • 相关阅读:
    Mac sublime text3 安装插件
    趣题记录
    Shadow DOM及自定义标签
    JavaScript 对象部署 Iterator 接口
    JavaScript实现循环链表
    使用JavaScript实现单向链表
    nodejs深入浅出读书笔记(三)
    nodejs深入浅出读书笔记(一)
    nodejs深入浅出读书笔记(二)
    为什么要了解Event loop?(二)
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10355600.html
Copyright © 2011-2022 走看看