【C语言】(11)函数

函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main(),所有简单的程序都可以定义其他额外的函数。

1. 函数定义

一个 C 函数由以下部分组成:

  • 返回类型:函数返回的数据类型。如果函数不返回值,则其返回类型为 void
  • 函数名称:这是函数的实际名称。
  • 参数:传递给函数的变量,称为实际参数。参数列表可以为空。
  • 函数体:包含一组定义函数执行任务的语句。

语法:

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

示例:

#include 

// 函数声明
int max(int num1, int num2);

int main() {
    // 局部变量声明
    int a = 100;
    int b = 200;
    int ret;

    // 调用函数以获取最大值
    ret = max(a, b);
    printf("最大值 : %d\n", ret);
    return 0;
}

// 函数返回两个数中较大的那个数
int max(int num1, int num2) {
    // 局部变量声明
    int result;
    if (num1 > num2)
        result = num1;
    else
        result = num2;
    return result; 
}

2. 函数声明

函数声明告诉编译器函数的名称、返回类型和参数。函数声明在调用函数之前是必需的。

语法:

返回类型 函数名称(参数类型);

示例:

int max(int num1, int num2);

3. 调用函数

创建函数后,可以在任何地方调用它。

示例:

int main() {
    int ret = max(100, 200);
}

4. 函数参数

函数参数允许向函数传递信息,使函数更具灵活性和功能性。以下是关于函数参数的详细介绍:

4.1 参数类型

函数可以接受多种类型的参数,包括但不限于整数、浮点数、字符、字符串和指针。参数的类型必须在函数声明和定义时指定。

示例:

void printMessage(int times, char symbol);

这里,printMessage 函数接受一个整数参数 times 和一个字符参数 symbol

4.2 形式参数与实际参数

  • 形式参数:在函数定义中声明的参数,作为局部变量存在。
  • 实际参数:在函数调用时提供给函数的值。

示例

// 函数定义
void display(int num) {
    printf("Number: %d\n", num);
}

int main() {
    int a = 5;
    // 函数调用
    display(a);  // 'a' 是实际参数
}

这里,num 是形式参数,而 a 是实际参数。

4.3 参数传递方式

  • 按值传递:将实际参数的值复制到形式参数。在函数内部,形式参数的改变不会影响实际参数。
  • 按引用传递:通过指针传递参数的地址。在函数内部,形式参数的改变会影响实际参数。

示例:按值传递

void swap(int x, int y) {
    int temp = x;
    x = y;
    y = temp;
}

在这个示例中,swap 函数的改变不会影响原始变量。

示例:按引用传递

void swap(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
}

在这个示例中,通过传递指针,swap 函数可以改变原始变量的值。

4.4 默认参数

C 语言不支持默认参数。这是 C++ 提供的功能,在 C 语言中,每个参数都必须显式地传递。

4.5 可变数量的参数

C 语言支持可变数量的参数,通常通过 头文件中定义的宏来处理。

示例

#include 

void printNumbers(int num, ...) {
    va_list args;
    va_start(args, num);
    for (int i = 0; i < num; i++) {
        int value = va_arg(args, int);
        printf("%d\n", value);
    }
    va_end(args);
}

int main() {
    printNumbers(3, 1, 2, 3);
}

在这个示例中,printNumbers 函数可以接受可变数量的整数参数。

你可能感兴趣的:(C语言程序设计,c语言,算法)