pre {
background-color: #f4f4f4;
padding: 10px;
border-radius: 5px;
}
函数的定义
什么是函数
在C语言中,函数是具有特定功能的代码块,可以通过函数名来调用,从而实现代码重用和增强程序的可读性。函数将代码组织成若干模块,使得程序结构更加清晰。
函数的声明
函数原型
在使用函数之前,必须对其进行声明。这通常在函数的定义之前或者头文件中完成。函数声明描述了函数的返回类型、函数名和参数类型。示例如下:
int add(int a, int b);
这段代码声明了一个名为add的函数,其返回类型是int,接受两个int类型的参数。
函数的定义
如何定义函数
函数的定义包括函数头和函数体。函数头包括返回类型、函数名和参数列表;函数体则是实现函数功能的代码块。以下是一个函数定义的示例:
int add(int a, int b) {
return a + b;
}
这段代码定义了一个add函数,该函数返回两个参数a和b的和。
函数的调用
如何调用函数
在程序中,你可以通过函数名和适当的参数来调用函数,从而执行其功能。例如:
#include
int add(int a, int b);
int main() {
int result = add(3, 5);
printf("Result: %d\n", result);
return 0;
}
int add(int a, int b) {
return a + b;
}
以上代码首先声明和定义了add函数,在主函数中调用并输出结果。
函数的参数
值传递
在C语言中,函数参数通常通过值传递,这意味着函数接收到的是实参的一个副本,而非实参本身。修改参数不会影响原来的变量。
指针传递
通过指针传递参数,函数可以修改实参的值。这在需要函数返回多个结果或需要传递复杂数据结构时非常有用。示例代码如下:
#include
void swap(int *x, int *y);
int main() {
int a = 5, b = 10;
swap(&a, &b);
printf("After Swap: a = %d, b = %d\n", a, b);
return 0;
}
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
这段代码定义了一个swap函数,通过指针交换两个变量的值。
函数的返回值
返回单个值
函数可以通过return语句返回一个值,并在函数声明中声明返回类型。例如前面的add函数返回一个int类型的值。
返回多个值
要返回多个值,可以使用返回指针或通过参数指针。如下示例:
#include
void calculate(int a, int b, int *sum, int *product);
int main() {
int add, mul;
calculate(5, 3, &add, &mul);
printf("Sum: %d, Product: %d\n", add, mul);
return 0;
}
void calculate(int a, int b, int *sum, int *product) {
*sum = a + b;
*product = a * b;
}
这段代码使用指针参数返回多个结果(和与积)。
递归函数
什么是递归
递归函数在其定义中调用自己实现循环操作,直到达到基准条件时停止。递归常用于解决分治问题。示例如下:
#include
int factorial(int n);
int main() {
int result = factorial(5);
printf("Factorial: %d\n", result);
return 0;
}
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
这段代码计算5的阶乘,通过递归实现。