📅  最后修改于: 2023-12-03 14:59:52.535000             🧑  作者: Mango
函数是 C 语言的重要组成部分,是可重用的代码块,它使得程序的逻辑结构更加清晰,方便阅读和维护。C 函数有以下特点:
C 函数的一般形式如下:
返回类型 函数名(参数列表) {
// 函数体
return 返回值;
}
int
类型。void
。例如,以下是一个将两个整数相加并返回结果的函数:
int add(int a, int b) {
int sum = a + b;
return sum;
}
我们可以在其他函数中调用 add
函数,并将其返回值存储在变量中:
int main() {
int a = 5, b = 3;
int c = add(a, b); // 调用 add 函数并将其返回值存储在 c 中
printf("%d\n", c); // 输出 8
return 0;
}
函数可以有零个、一个或多个参数,每个参数用逗号隔开,格式如下:
返回类型 函数名(类型1 参数1, 类型2 参数2, ...) {...}
参数列表用括号括起来,可以包含任意数量的参数,例如:
void print_star() {
printf("**********\n");
}
void print_n_chars(char ch, int n) {
int i;
for (i = 0; i < n; i++) {
printf("%c", ch);
}
printf("\n");
}
int main() {
print_star(); // 输出 10 个星号字符
print_n_chars('*', 5); // 输出 5 个星号字符
return 0;
}
函数可以返回一个值,也可以没有返回值。如果没有返回值,则返回类型应该为 void
;如果有返回值,则需要在函数体中使用 return
语句返回一个值,例如:
int max(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
void print_hello() {
printf("Hello, world!\n");
}
int main() {
int a = 4, b = 7;
int c = max(a, b); // 返回较大的数
printf("The max of %d and %d is %d\n", a, b, c);
print_hello(); // 不返回任何值
return 0;
}
函数可以在其定义的范围内定义局部变量,这些变量只能在函数内部使用,不能在其他函数或全局范围内使用。局部变量的作用域从定义开始,到函数结束。
int add(int a, int b) {
int sum = a + b; // 定义局部变量 sum
return sum;
}
int main() {
int a = 3, b = 4;
int sum = add(a, b);
printf("%d + %d = %d\n", a, b, sum); // 输出 "3 + 4 = 7"
// printf("%d\n", sum); // 这里不能使用 sum,因为 sum 是 add 函数的局部变量
return 0;
}
全局变量定义在函数外部,它与所有函数都有关,因此可以在任意函数中使用。
int g_count = 0; // 定义全局变量
void increase_count() {
g_count++; // 在函数中使用全局变量
}
int main() {
increase_count();
increase_count();
printf("The count is %d\n", g_count); // 输出 "The count is 2"
return 0;
}
在 C 语言中,函数也可以被视为一种数据类型。我们可以将函数名作为指针变量来使用,或使用 typedef
关键字定义函数指针类型。示例代码如下:
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
typedef int (*calc_func_t)(int, int); // 定义函数指针类型
int main() {
calc_func_t p_add = add; // 声明函数指针并初始化
calc_func_t p_subtract = subtract;
int result1 = p_add(3, 4); // 使用函数指针调用函数
int result2 = p_subtract(10, 5);
printf("%d, %d\n", result1, result2); // 输出 "7, 5"
return 0;
}
C 标准库中有许多预定义函数,可以直接在程序中使用。例如,printf
、scanf
、malloc
、strlen
等函数都是预定义函数。需要在程序开头包含相应的头文件,例如:
#include <stdio.h> // 标准输入输出库头文件
#include <stdlib.h> // 标准库头文件
#include <string.h> // 字符串处理头文件
int main() {
printf("Hello, world!"); // 输出 "Hello, world!"
char *str = malloc(100); // 动态分配内存
strcpy(str, "Hello"); // 复制字符串
strcat(str, ", world!"); // 连接字符串
printf("%s\n", str); // 输出 "Hello, world!"
free(str); // 释放动态分配的内存
return 0;
}
本文介绍了 C 函数的基本特点、定义、参数、返回值、局部变量、全局变量、函数指针和预定义函数等概念。C 语言中的函数是可重用的代码块,可以使程序更模块化和可维护。函数的灵活运用是 C 语言编程的关键之一。