C语言 函数

  • Post category:C

C语言函数的完整使用攻略

函数的定义

在C语言中,函数是一个独立的代码块,它可以被反复调用,使代码更加模块化和复用。函数通常由以下部分组成:

返回值类型 函数名(参数列表){
    函数体
}

其中:

  • 返回值类型:函数的返回值类型,可以为int、float、char、void等。
  • 函数名:函数的名字,可以自定义。
  • 参数列表:函数的参数,可以为0个或多个。
  • 函数体:函数的实现部分,包含一组执行语句和逻辑。

例如,如下是一个计算两个数之和的函数:

int sum(int a, int b){
    int result = a + b;
    return result;
}

函数的调用

调用函数,意味着执行函数体中的代码。通过在程序中声明和调用函数,可以避免代码重复。函数的调用方法如下:

// 声明
返回值类型 函数名(参数列表);

// 调用
函数名(参数列表);

例如,上面的sum函数可以通过以下方式调用:

int res = sum(3, 5);
printf("3 + 5 = %d\n", res);  // 输出 8

函数的参数

函数可以有多个参数,参数可以是基本数据类型或者自定义类型。C语言中函数的参数传递方式有两种:

  • 值传递:将实参的值传递给形参,在函数体内修改形参的值不会影响实参的值。
  • 地址传递:将实参的内存地址传递给形参,在函数体内修改形参的值也会影响实参的值。

以下是一个使用值传递的函数示例,它将两个整数相加,并返回结果:

int sum(int a, int b){
    int result = a + b;
    return result;
}

以下是一个使用地址传递的函数示例,它将两个整数的值交换:

void swap(int *a, int *b){
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

函数的返回值

函数可以有返回值,返回值的类型可以为int、float、char等基本数据类型,也可以为自定义类型。函数通过return语句返回值,如果没有返回值,返回类型应该为void。以下是一个求绝对值的函数示例:

int abs(int x){
    if (x < 0){
        return -x;
    }
    return x;
}

以下是一个使用自定义类型的函数示例,它将两个复数相加:

struct Complex{
    double real;
    double imag;
};

struct Complex add(struct Complex c1, struct Complex c2){
    struct Complex result;
    result.real = c1.real + c2.real;
    result.imag = c1.imag + c2.imag;
    return result;
}

示例1

以下是一个求阶乘的函数示例:

int factorial(int n){
    if (n < 0){
        return -1;
    }
    int result = 1;
    for (int i = 1; i <= n; i++){
        result *= i;
    }
    return result;
}

在主函数中调用该函数,求5的阶乘:

int res = factorial(5);
printf("5! = %d\n", res);  // 输出120

示例2

以下是一个使用地址传递的函数示例,它将两个整数的值交换:

void swap(int *a, int *b){
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

在主函数中调用该函数,交换两个整数的值:

int x = 5, y = 8;
swap(&x, &y);
printf("x = %d, y = %d\n", x, y);  // 输出x=8, y=5

总结

通过使用函数,可以实现代码模块化,避免代码重复,代码更易读。函数包含声明和定义两个部分,可以有多个参数和返回值。调用函数需要使用函数名和参数列表,参数传递分为值传递和地址传递两种方式。