函数
1、函数的概述
1、函数的概述 函数:为同一功能服务器的代码 封装成一个整体,可以多次调用。(一份代码、多次调用) 需要传哪些数据给函数?(实参) 函数的功能代码(函数体)如何实现? 函数需要返回啥类型的数据?(函数的返回值类型)
2、函数的分类(定义角度) 库函数(c语言库)、自定义函数、系统调用(内核提供给用户的函数接口)
3、函数的分类(有无参数) 无参的函数:不能将函数外部的数据 传递 给函数内部 有参的函数:通过参数 将函数外部的数据 传递到函数内部 (参数:函数外部数据 到 函数内部的 桥梁)
2、函数定义、声明、调用
函数的定义、函数的声明、函数的调用。
1、函数定义:实现函数体,确定函数名,函数的形参、函数的返回值类型
c
1 //函数的定义 定义处x y叫形参 (函数定义的时候 形参不会开辟空间)
2 //只有当函数调用的时候 才会为形参 开辟空间 保存实参的值
3 int my_add(int x, int y) //x = data1, y=data2
4 {
5 //return 返回函数运算结果 结束当前函数
6 return x + y;
7 }2、函数声明(先调用 后定义)
告知编译器 该函数的函数名是啥 有几个形参 返回值类型是啥
c
1 //函数声明 告知编译器 如果遇到函数名为my_add,有两个int形参,以及一个int返回值类型
2 //请通过编译
3 //int my_add(int, int);//ok 不推荐
4 int my_add(int x, int y);3、函数的调用:执行函数体。函数名+(实参);
3、函数调用的过程

4、 函数传参
1、普通变量作为函数的参数
函数内部 需要使用外部变量的值 需要将外部变量的 值传递 给函数内部。这时 普通变量
就要作为函数的 形参 (单向传递之值传递)
2、数组作为函数的参数
函数内部 可以 操作(读写) 外部数组的元素。
c
1 void inputIntArray(int arr[], int n);
2 void printfIntArray(int arr[], int n);
3 void sortIntArray(int arr[], int n);
4 void test04()
5 {
6 int arr[5] = {0};
7 int n = sizeof(arr) / sizeof(arr[0]);
8
9 //给数组获取键盘输入
10 inputIntArray(arr, n);
11
12 //对数组进行排序
13 sortIntArray(arr, n);
14
15 //遍历排序后的数组元素
16 printfIntArray(arr, n);
17
18 return;
19 }
20 int main(int argc, char const *argv[])
21 {
22 test04();
23 return 0;
24 }
25
26 void sortIntArray(int arr[], int n)
27 {
28 int i = 0;
29 for (i = 0; i < n ‐ 1; i++)
30 {
31 int min = i;
32 int j = min + 1;
33
34 for (; j < n; j++)
35 {
36 if (arr[min] > arr[j])
37 min = j;
38 }
39
40 if (i != min)
41 {
42 int tmp = arr[i];
43 arr[i] = arr[min];
44 arr[min] = tmp;
45 }
46 }
47
48 return;
49 }
50 void inputIntArray(int arr[], int n)
51 {
52 printf("请输入%d个int元素\n", n);
53
54 int i = 0;
55 for (i = 0; i < n; i++)
56 {
57 scanf("%d", &arr[i]);
58 }
59
60 return; //结束标记
61 }
62 void printfIntArray(int arr[], int n)
63 {
64 int i = 0;
65 for (i = 0; i < n; i++)
66 {
67 printf("%d ", arr[i]);
68 }
69 printf("\n");
70
71 return;
72 }3、字符数组作为函数的参数
c
1 #include <string.h>
2 void my_get_string(char str[], unsigned long n);
3 int my_strlen(char str[]);
4 void test05()
5 {
6 char str[128] = "";
7
8 //键盘获取字符串
9 my_get_string(str, sizeof(str));
10
11 //定义函数my_strlen测量字符串的参数
12 printf("字符串的长度为%d\n", my_strlen(str));
13 }
14 int main(int argc, char const *argv[])
15 {
16 test05();
17 return 0;
18 }
19 int my_strlen(char str[])
20 {
21 int i = 0;
22 while (str[i] != '\0')
23 {
24 i++;
25 }
26
27 return i;
28 }
29 void my_get_string(char str[], unsigned long n)
30 {
31 printf("请输入一个字符串:");
32 fgets(str, n, stdin);
33 str[strlen(str) ‐ 1] = 0; //去掉回车
34
35 return;
36 }
阿源的知识库