欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言-自定义函数

程序员文章站 2022-09-02 23:16:14
----------------------- --1-- 自定义函数定义1.1 无参无返回值函数1.2无参有返回值函数1.3有参无返回值函数1.4有参有返回值函数--2--函数的参数2.1形式参数...

-----------------------

--1-- 自定义函数定义1.1 无参无返回值函数1.2无参有返回值函数1.3有参无返回值函数1.4有参有返回值函数--2--函数的参数2.1形式参数介绍和使用2.2实际参数介绍和使用2.3函数的参数传递过程--3--函数的声明及调用3.1函数的声明3.2函数的调用

-----------------------

【写在开头:】

函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。

自定义函数分为:

无参无返回值函数

无参有返回值函数

有参无返回值函数

有参有返回值函数

 

书写格式:

返回值类型函数名称(函数参数){

函数体;

}

 

函数从定义到使用分三步:1、声明 2、定义函数  3、调用函数

 

 

--1-- 自定义函数定义 1.1 无参无返回值函数

定义格式

一般形式:

  void 函数名(){

  声明部分; //定义局部变量

  语句;

  }

 

如:

void sum(){
    //语句
}

 

1.2 无参有返回值函数

定义格式

一般形式:

  返回值类型 函数名(){

  声明部分;

  语句;

  return 返回值类型:变量或常量;

  }

 

如:

int sum(){
    return 1 + 2;
}

 

1.3 有参无返回值函数

定义格式

一般形式:

  void 函数名(形式参数表列){

  声明部分;

  语句;

  }

 

如:

void sum(int x, int y){
    //运算
}

 

1.4 有参有返回值函数

定义格式

一般形式:

  返回值类型 函数名(形参){

  声明部分;

  语句;

  return 返回值类型变量或常量;

  }

 

如:

int sum(int x, int y){
    //运算
    return x + y;
}

 

 

--2--函数的参数 2.1形式参数介绍和使用

定义函数的时候,函数名后面小括号中的参数,简称行参。

/**
 *  自定义sum函数
 *
 *  @param x 形参1
 *  @param y 行参2
 *
 *  @return 返回运算结果
 */
int sum(int x, int y){
    //运算
    return x + y;
}

 

注意:

1)形参定义后,并不会立即分配空间

  在函数被调用的时候才会真正的分配存储空间

2)如果有多个形参,则用逗号“,”隔开

3)形参的类型可以不相同

4)在函数中不能定义和形参同名的变量

形参只出现在函数定义中,在整个函数体内部都可以使用,离开函数则不能再使用。

 

2.2实际参数介绍和使用

调用函数时,函数名后面小括号的参数,简称实参。

实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

形参和实参的功能是作数值的传递。发生函数调用时,主调函数把实参的值传送给被调函数的形参,从而实现主调函数向被调函数数据的传送。

int main(int argc, const char * argv[]) {
    int sum(int x, int y); //函数声明
    
    int result = sum(3, 5); //此处3, 5是实参
    
    return 0;
}

/**
 *  自定义sum函数
 *
 *  @param x 形参1
 *  @param y 行参2
 *
 *  @return 返回运算结果
 */
int sum(int x, int y){
    //运算
    return x + y;
}

注意:

实参可以是变量,也可以是常量,也可以是表达式。

主调函数和被调函数是相对而言的。

 

2.3函数的参数传递过程

1)形参变量只有在被调用时才分配存储空间,在调用结束时,即刻释放所分配的内存单元。

2)实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便把这些值传递给形参。

  因此应预先用赋值,输入等方法使实参获得确定的值。

3)实参和形参在数量、类型、顺序上应严格一致。

 

--3--函数的声明及调用 3.1函数的声明

在主调函数中,调用某被调函数之前应对该被调函数进行说明(声明)。如果不进行声明,则要将被调函数写在主调函数上方。

一般形式:

  返回值类型 被调函数名(类型 形参,类型 形参…);

  返回值类型 被调函数名(类型,类型…);

    int sum(int x, int y); //函数声明

 

3.2函数的调用

一般形式为:

函数名 (实参表列);

    int result = sum(3, 5); //调用sum(int, int)函数

 

注意:

1)函数表达式

  函数作为表达式中的一项出现在表达式中

  m = max(34,10)+10;

 

2)函数调用作为另外一个函数的实参

 

3)函数的嵌套调用

  max(max(34, 44), 299);

 

4)函数名不能和变量名同名

    int sum = sum(3, 5); //错 函数名不能和变量名同名

 

【写在结尾:】

『封装,作为面向对象的四大特性之一,隐藏了代码的内部细节,提供一个对外的接口。c语言虽然是一个面向过程的语言,但是可以将一些常用的自定义函数合成一个自己的工具类,方便重用』