zoukankan      html  css  js  c++  java
  • 函数(手写)

    函数

    c#是通过静态函数来实现模块化程序设计的。
    1.1函数的定义:
      任何函数都是由函数说明和函数体两部分组成。
      根据函数是否需要参数,可将函数分为:无参函数有参函数
    1、无参函数的一般形式:
    函数类型 函数名(函数参数)
    {
    说明语句部分;
    可执行语句部分;
    }
    2、有参函数的一般形式 :
    函数类型 函数名(数据类型 参数[,数据类型 参数2……])
    {
    说明语句部分;
    可执行语句部分;
    }
      有参函数比无参函数多了一个参数表。调用有参函数时,调用函数将赋予这些参数实际的值。
      为了与调用函数提供的实际参数区别开,将函数定义中的参数表称为形式参数表,简称形参表。
    【案例】定义一个函数,用于求两个数中的大数。
    /*功能:定义一个求较大数的函数并在主函数中调用*/
    static int Max(int n1,int n2)
    {
    return(n1>n2?n1:n2);
    }
    static void Main(string[] args)
    {
    int num1,num2;//声明两个变量
    num=4;//赋值
    num2=7;//赋值
    //调用Max函数
    int s=Max(num1,num2);
    Console.WriteLine(s);
    Console.ReadKey();
    }

    1.2、函数的返回值与函数类型:
      函数可分为有返回函数和无返回函数两种。
    1、函数返回值与return语句:
    有参数的返回值,是通过函数中的return语句来获得的。
    注意:调用函数中无return语句,并不是不返回一个值,而是一个不确定的值。为了明确表示不返回值,可以用“void”定义成“无(空)类型”。
    2、函数类型:
    在定义函数时,对函数类型的说明,应与return语句中、返回值表达式的类型一致。
    如果不一致,则以函数类型为准。如果缺省函数类型,则系统一律按整数处理。
    良好的程序设计习惯:为了使程序有良好的可读性并减少错误,凡不要求返回值的函数都应定义为空类型;即使函数类型为整数,也不使用系统的缺省处理 。
    1.3、函数的调用:
    在程序中,是通过对函数的调用来执行函数体的,其过程与其它语言的子程序调用相似。
    函数调用的一般形式为:函数名([实际参数表]);

    切记:实参的个数、类型和顺序,应该与被调用函数所要求的参数个数、类型和顺序一致,才能正确的进行数据传递。
    几种函数调用方式:
    1、函数表达式:函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。(这种方式要求函数是有返回值的

    2、函数语句:函数可以只进行某些操作而不返回函数值。(这时的函数调用可作为一条独立的语句。

    3、函数参数:函数作为另一个函数调用的实际参数出现。(这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的
    1.4、函数的形参与实参:
      函数的参数分为形参和实参两种,作用是实现数据传送。
      形参出现在函数定义中,只能在该函数体内使用。发生函数调用时,调用函数把实参的值复制1份,传送给被调用函数的形参,从而实现调用函数向被调用函数的数据传送。
    【案例】实参对形参的数据传递
    /*实参对形参的数据传递*/
    static void s(int n)
    {
    int i;
    Console.WriteLine(n);
    for(i=n-1;i>=1;i--)
    n=n+1;//改变形参的值
    Console.WriteLine(n);//输出改变后的形参的值
    }
    static void Main(string [] args)
    {
    int n=10;//定义实参n,并初始化
    s(n);//调用函数
    Console.WriteLine(n);//查看实参是否因函数调用而改变
    Console.ReadKey();
    }
    说明:1、实参可以是常量、变量、表达式、函数等;无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便把这些值传递给形参。(因此,应预先用赋值、输入等办法,使实参获得确定的值)
       2、形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。
       3、实参对形参的数据是单向的,即只有把实参的值传递给形参,而不能把形参的值反向的传递给实参。
       4、实参和形参占用不同的内存单元,即使同名也互不影响。

    2、数组作为函数参数:
    数组用作函数参数有两种形式:一种是把数组元素作为实参使用;另一种是把数组名作为函数的形参和实参使用。
    2.1、数组元素作为函数参数:
      数组元素就是下标变量,它与普通变量并无区别。
      数组元素只能用作函数实参,其用法与普通变量完全相同:在发生函数调用时,把数组元素的值传送给形参,实现单向值传递。
    【案例】写一函数,统计字符串中字母的个数
    static bool isalp(char c)
    {
    if(c>='a'&&c<='z'||c>='A'&&c<='Z')
    {
    return true;
    }
    else
    {
    return false;
    }
    }
    static void Main(string [] arge)
    {
    int i,num=0;//声明变量
    string line=Console.ReadLine();//接收用户输入
    char[] str=line.ToCharArray();//将字符串转换为字符数组
    int lineLen=str.Length;//得到字符数组的长度
    for(i=0;i<lineLen;i++)
    {
    if(isalp(str[i]))
    {
    num++;
    }
    }
    Console.WriteLine(num);
    Console.ReadKey();
    }
    说明:1、用数组元素作实参时,只要数组类型和函数的形参类型一致即可,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。
       2、在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值的传递,是把实参变量的值赋予形参变量。
    2.2、数组名作为函数的形参和实参:
      与数组元素作为函数的形参和实参不同,用数组元素作实参时,对数组的处理是传递引用(地址)。
      即在数组作函数参数时,形参变量和实参变量是由编译系统分配的两个相同的内存单元。在函数调用时发生的地址传送,是把实参的地址赋予形参变量。

    ------------类的成员方法实际上是函数,可分为一般的成员方法和构造函数与析构函数。------------

  • 相关阅读:
    ASP.NET 2.0个性化配置(profile)
    03 创建虚拟机
    一些新的Blender的视频教程
    [转载]虚拟家庭存档文件修改方法
    [转载]游戏开发中常用的设计模式
    批处理for命令详解(转)
    [转载]高效软件开发团队的特征
    软件构架师的特点
    一点SICP(Structure and Interpretation of Computer Programs) 资料 (转载加整理)
    [译]游戏编程入门(by David Astle)
  • 原文地址:https://www.cnblogs.com/pengyouqiang88/p/5022488.html
Copyright © 2011-2022 走看看