032. 编写带参数的函数

在C语言中,带参数的函数是非常常见的,参数允许函数接收外部传入的值,从而使得函数更加灵活和通用。以下将详细介绍如何编写带参数的函数,并通过具体示例展示如何使用这些参数。

1. 定义带参数的函数

定义带参数的函数时,需要在函数名后面的小括号中指定参数列表。每个参数包括类型和参数名。

示例1:定义一个带参数的函数

#include <stdio.h>

// 定义一个带参数的函数,计算两个整数的和
int add(int a, int b) {
    return a + b;
}

int main() {
    int num1 = 5, num2 = 3;
    int result = add(num1, num2); // 调用函数并传递参数

    printf("The sum of %d and %d is %d\n", num1, num2, result);

    return 0;
}

输出结果

The sum of 5 and 3 is 8

2. 传递多个参数

函数可以接受多个参数,这些参数在调用时按顺序传递。

示例2:定义一个带多个参数的函数

#include <stdio.h>

// 定义一个带多个参数的函数,计算三个整数的平均值
float average(int a, int b, int c) {
    return (a + b + c) / 3.0;
}

int main() {
    int num1 = 10, num2 = 20, num3 = 30;
    float result = average(num1, num2, num3); // 调用函数并传递参数

    printf("The average of %d, %d, and %d is %.2f\n", num1, num2, num3, result);

    return 0;
}

输出结果

The average of 10, 20, and 30 is 20.00

3. 传递数组作为参数

可以将数组传递给函数。在函数中,数组参数实际上是数组的首地址。

示例3:定义一个带数组参数的函数

#include <stdio.h>

// 定义一个带数组参数的函数,计算数组的总和
int sumArray(int arr[], int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    int result = sumArray(arr, size); // 调用函数并传递数组

    printf("The sum of the array elements is %d\n", result);

    return 0;
}

输出结果

The sum of the array elements is 15

4. 传递结构体作为参数

可以将结构体传递给函数。在函数中,可以访问和修改结构体的成员。

示例4:定义一个带结构体参数的函数

#include <stdio.h>

// 定义一个结构体
struct Person {
    char name[50];
    int age;
};

// 定义一个带结构体参数的函数,打印结构体信息
void printPerson(struct Person p) {
    printf("Name: %s, Age: %d\n", p.name, p.age);
}

int main() {
    struct Person person = {"Alice", 25};
    printPerson(person); // 调用函数并传递结构体

    return 0;
}

输出结果

Name: Alice, Age: 25

5. 传递指针作为参数

可以将指针传递给函数。在函数中,可以通过指针修改外部变量的值。

示例5:定义一个带指针参数的函数

#include <stdio.h>

// 定义一个带指针参数的函数,交换两个整数的值
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int num1 = 5, num2 = 10;
    printf("Before swap: num1 = %d, num2 = %d\n", num1, num2);

    swap(&num1, &num2); // 调用函数并传递指针

    printf("After swap: num1 = %d, num2 = %d\n", num1, num2);

    return 0;
}

输出结果

Before swap: num1 = 5, num2 = 10
After swap: num1 = 10, num2 = 5

6. 传递函数指针作为参数

可以将函数指针传递给另一个函数。这在实现回调函数或函数表时非常有用。

示例6:定义一个带函数指针参数的函数

#include <stdio.h>

// 定义一个函数,计算两个整数的和
int add(int a, int b) {
    return a + b;
}

// 定义一个函数,计算两个整数的差
int subtract(int a, int b) {
    return a - b;
}

// 定义一个带函数指针参数的函数,执行指定的操作
int operate(int (*func)(int, int), int a, int b) {
    return func(a, b);
}

int main() {
    int result1 = operate(add, 5, 3); // 调用函数并传递函数指针
    int result2 = operate(subtract, 5, 3); // 调用函数并传递函数指针

    printf("Result of addition: %d\n", result1);
    printf("Result of subtraction: %d\n", result2);

    return 0;
}

输出结果

Result of addition: 8
Result of subtraction: 2

通过上述示例,你可以看到如何在C语言中编写带参数的函数:

  1. 定义函数:在函数名后面的小括号中指定参数列表。
  2. 调用函数:在调用时按顺序传递参数。
  3. 传递数组:数组参数实际上是数组的首地址。
  4. 传递结构体:可以访问和修改结构体的成员。
  5. 传递指针:可以通过指针修改外部变量的值。
  6. 传递函数指针:可以实现回调函数或函数表。

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)