点击上方"蓝字"关注我们
01、函数声明和定义
int main() { printf("Hello World!"); return 0;}函数由两部分组成void myFunction() { // 声明 declaration // 函数体(要执行的代码)(definition)}Declaration 声明函数名称、返回类型和参数 (如果有)Definition 函数体 (要执行的代码)// 函数声明void myFunction();// 主要方法int main() { myFunction(); // --> 调用函数 return 0;}void myFunction() {// 函数定义 printf("晚上好!");}
02、调用函数
// 创建函数void myFunction() { printf("晚上好!");}int main() { myFunction(); // 调用函数 myFunction(); // 可以被多次调用 return 0;}// 输出 -> "晚上好!"// 输出 -> "晚上好!"
03、函数参数
void myFunction(char name[]) { printf("Hello %s\n", name);}int main() { myFunction("Liam"); myFunction("Jenny"); return 0;}// Hello Liam// Hello Jenny
04、多个参数
void myFunction(char name[], int age) { printf("你好 %s 你 %d 岁了。\n",name,age);}int main() { myFunction("Liam", 3); myFunction("Jenny", 14); return 0;}// 你好 Liam 你 3 岁了。// 你好 Jenny 你 14 岁了。
05、返回值
int myFunction(int x) { return 5 + x;}int main() { printf("结果: %d", myFunction(3)); return 0;}// 输出 8 (5 + 3)两个参数int myFunction(int x, int y) { return x + y;}int main() { printf("结果: %d", myFunction(5, 3)); // 将结果存储在变量中 int result = myFunction(5, 3); printf("结果 = %d", result); return 0;}// 结果: 8 (5 + 3)// 结果 = 8 (5 + 3)
06、递归示例
int sum(int k);int main() { int result = sum(10); printf("%d", result); return 0;}int sum(int k) { if (k > 0) { return k + sum(k - 1); } else { return 0; }}
07、数学函数
#include <math.h>printf("%f", sqrt(16)); // 平方根printf("%f", ceil(1.4)); // 四舍五入 (入)printf("%f", floor(1.4)); // 四舍五入 (舍)printf("%f", pow(4, 3)); // x(4)的y(3)次方
-
abs(x)
绝对值 -
acos(x)
反余弦值 -
asin(x)
反正弦值 -
atan(x)
反正切 -
cbrt(x)
立方根 -
cos(x)
余弦 -
exp(x)
Ex 的值 -
sin(x)
x 的正弦值 -
tan(x)
角度的正切
总结
知识回顾
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 入门C语言只需一个星期(星期一) |
| 入门C语言只需一个星期(星期二) |
| 入门C语言只需一个星期(星期三) |
| 入门C语言只需一个星期(星期四) |
#include<stdio.h>// 静态函数(static function)static void static_func() { printf("这是一个静态函数。");}// 常量函数(const function)const void const_func() { printf("这是一个常量函数。");}// 内联函数(inline function)inline void inline_func() { printf("这是一个内联函数。");}int main() { static_func(); const_func(); inline_func(); return 0;}
-
静态函数(static function):使用
static
关键字修饰的函数,其作用范围仅限于定义它的源文件。这意味着在其他源文件中无法访问这个函数。静态函数在内存中只有一份副本,不会被多个源文件中的同名函数所干扰。 -
常量函数(const function):使用
const
关键字修饰的函数,表示该函数不会修改任何外部变量的值。这有助于提高代码的可读性和安全性。但是,这并不意味着函数内部不能调用其他非const函数。 -
内联函数(inline function):使用
inline
关键字修饰的函数,编译器会尽量将函数调用替换为函数体的代码,以减少函数调用的开销。内联函数通常用于简单的函数,以提高程序的执行效率。需要注意的是,编译器并不一定会将内联函数真正地内联,它会根据实际情况决定是否进行内联优化。
指针函数举例
假设我们有一个函数 `add`,它接受两个整数作为参数并返回它们的和。我们可以定义一个指针函数 `create_add_func`,它返回一个指向 `add` 函数的指针。这样,我们就可以在运行时动态地创建指向 `add` 函数的指针。
```c#include<iostream>int add(int a, int b) { return a + b;}// 定义一个指针函数,它返回一个指向 add 函数的指针typedef int (*AddFuncPtr)(int, int);AddFuncPtr create_add_func() { return add;}int main() { AddFuncPtr add_func_ptr = create_add_func(); int result = add_func_ptr(3, 4); std::cout << "Result: "<< result<< std::endl; // 输出:Result: 7 return 0;}```
在上面的代码中,我们首先定义了一个名为 `add` 的函数,它接受两个整数作为参数并返回它们的和。然后,我们定义了一个名为 `create_add_func` 的指针函数,它返回一个指向 `add` 函数的指针。在 `main` 函数中,我们调用 `create_add_func` 函数来获取指向 `add` 函数的指针,并使用该指针调用 `add` 函数来计算 3 和 4 的和。
函数指针举例
假设我们有一个函数 `print_sum`,它接受两个整数作为参数并打印它们的和。我们可以定义一个函数指针变量 `sum_func`,并将 `print_sum` 函数的地址赋值给它。这样,我们就可以通过 `sum_func` 调用 `print_sum` 函数。
```c#include<iostream>void print_sum(int a, int b) { std::cout << a << " + " << b << " = " << a + b<< std::endl;}
// 定义一个函数指针类型,它指向一个接受两个整数并打印它们的和的函数typedef void (*SumFuncPtr)(int, int);int main() { SumFuncPtr sum_func = print_sum; sum_func(3, 4); // 输出:3 + 4 = 7 return 0;}```
在上面的代码中,我们首先定义了一个名为 `print_sum` 的函数,它接受两个整数作为参数并打印它们的和。然后,我们定义了一个名为 `sum_func` 的函数指针变量,并将 `print_sum` 函数的地址赋值给它。在 `main` 函数中,我们通过 `sum_func` 调用 `print_sum` 函数来打印 3 和 4 的和。
故我在
点击下方卡片 关注我
↓↓↓
Qt历险记
一名技术分享师,分享方向:->Qt(C/C++、linux、STM32、MySql/Sqlite3、TCP/UDP),设计方面->Ai、PS、visio、AD、Protues。