• 什么是函数参数,如何传递函数参数


    函数分有参数函数和无参数函数,函数参数当然只有参数的函数。函数参数就是我们写函数名称后圆括号内的常量值、变量、表达式或函数。当我们定义函数时,这 是的参数有称为形式参数,形式参数不能是常量值。当我们引用或调用该函数时,这是的参数有称为实际参数(实参)。形式参数的类型说明可在函数体{}与紧跟 在函数名之后的()之间,也可在()之内,目前流行的风格应是在括号内。这是一种风格问题,可以依照个人习惯。

    在函数调用时,大多数的情况下,主函数和被调用的函数之间有数据传递关系,在传递数据时情况较复杂,但记住一点就是参数类型必须匹配,数量一般也相等(除在某些库函数用省时后续参数),集中较复杂的情况说明如下:

    1,强制类型转换。这些类型转换必须是c语言中可进行的。如形参说明为int,而实参为float型,那么在实际处理时按float型处理。
    2,数据类型转换。包括字符串,在调用函数时传递实参变量数组的目前地址,或字符串的首指针。
    3,在以函数或表达式做参数时,实参形式的表达式或函数必须有确定的与形参类型匹配的值,
    另外还应注意,c中规定,时参变量对形参变量的数据传递都是在局部的情况下单向传递的,只能是参传递给形参,而不能把形参传递给实参,但是如果实参变量和 形参变量都是全局变量时就不同了,这时形参的改变会影响实参的改变,这在某些场合中是一种非常有用的方法。比如我们编写两个矩阵相乘的函数,两个实参形式 的矩阵相乘函数调用一个函数时,相乘的结果(两矩阵相乘)要返回到调用函数,这是用全局变量就是一种折中的方法,但最好的方法还是采用函数参数直接返回的 方法,下面是用全局变量的方法实现的数组之间的乘法,用来说明参数的传递。

    /*****************A=B*C******************/ #include<stdio.h>
    #include<conio.h>
    #define X 3
    #define Y 3

    int a[X][Y];
    int b[X][Y];
    int c[X][Y];

    void matrix(int b[][X],int c[][Y]);
    main()
    {
    int i,j,temp;
    clrscr();
    printf("lease input int matrix b[%d][%d]"n",X,Y);
    for(i=0;i<Y;i++) /*输入要进行运算的数组*/ for(j=0;j<Y;j++){
    scanf("%d",&temp);
    b[j]=temp;
    }
    printf("lease input int matrix c[%d][%d]"n",X,Y);
    for(i=0;i<X;i++) /*输入要进行运算的数组*/ for(j=0;j<Y;j++){
    scanf("%d",&temp);
    c[j]=temp;
    }
    matrix(b,c);
    printf("Now print resource matrix b[%d][%d]=",X,Y);
    for(i=0;i<X;i++){
    printf(""n" ;
    for(j=0;j<Y;j++)
    printf("%d ",b[j]);
    }
    printf(""n" ;
    printf("Now print resource matrix c[%d][%d]=",X,Y);
    for(i=0;i<X;i++){
    printf(""n" ;
    for(j=0;j<Y;j++)
    printf("%d ",c[j]);
    } /*完成对输入的相应,即把输入的数组打出来*/ printf(""n":lol ;
    printf("Now printm multiply results matrix a[%d][%d]=B*C:",X,Y);
    for(i=0;i<X;i++){
    printf(""n":lol ;
    for(j=0;j<Y;j++)
    printf("%d ",a[j]);
    }/*打出结果*/ getch();
    return 0;
    }
    /**********************计算数组乘法的子函数************************/ void matrix(int b[][X],int c[][Y])
    {
    int i,j,k,temp;
    for(i=0;i<X;i++)
    for(j=0;j<Y;j++){
    for(k=0;k<Y;k++)
    a[j]+=b[k]*c[k][j];
    }
    }

    大家可看出,函数参数像数学中的函数一样,在数学中,y=f(x)是基本的函数表达形式,x可看作是参数,y可看作是返回值;z=f(x,y)事二元函数,有两个参数,在C语言中对应于两个参数的函数。这样大家或许明白了什么时函数及函数参数了吧。
  • 相关阅读:
    pytorch的函数中的group参数的作用
    pytorch的函数中的dilation参数的作用
    resnet18全连接层改成卷积层
    Pytorch实现UNet例子学习
    MyEclipse中出现Address already in use:JVM_Bind:8080
    为SQL数据库创建登录名和密码
    集合体系
    排序算法及其java实现
    java泛型通配符?
    Arrays.asList的用法
  • 原文地址:https://www.cnblogs.com/analyzer/p/1293975.html
Copyright © 2020-2023  润新知