黑马程序员——C语言——函数

主要讲述了函数的定义,使用、形参、实参以及返回值等内容。

一、函数。

    一个程序包括一个或者多个程序段(小程序),每个程序段都有自己的功能,我们一般称这些程序段为“函数”

二、函数的定义

      1、定义函数

            ① 定义函数名;   ②定义函数体;

      2、 定义函数的格式

        返回值类型  函数名(形式参数列表)

      {

        函数体

       }

      代码举例

1 //定义一个函数,计算两个整数的和
2 int sum(int a, int b) 
3 {
4     int c = a + b;
5 }

三、函数的参数

    1、形式参数:定义函数时函数名后面中的参数,简称形参

    2、实际参数:调用函数式传入的具体数据,简称实参

    3、实参个数必须等于形参个数

    4、函数体内部不能定义和形参一样的变量

    5、如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值

    6、一个函数可以没有形参,也可以有无限多个形参

 1 //代码举例
 2 // 形式参数,简称形参
 3 int sum(int num1, int num2)
 4 {
 5     // 函数体内部不能定义和形参一样的变量
 6     // int num1;
 7 
 8     num1 = 50;
 9 
10     return num1 + num2;
11 }

四、 函数的返回值

      1、return的作用:

         ①  退出函数

         ②  返回一个具体值给函数调用者

      2、返回值注意点

         ① void代表没有返回值

         ② 如果没有明确说明返回值类型,默认是返回int类型

         ③ 就算明确声明了返回值类型,也可以不返回任何值

 1 //代码举例
 2 //返回字符型
 3 char test()
 4 {
 5     return A;
 6 }
 7 //void没有返回值
 8 
 9 void test5()
10 {
11     
12 }
13 //返回int型数据
14 int test3()
15 {
16     printf("返回int型\n");
17 }
18 
19 // 如果不明确声明返回值类型,默认就是int类型
20 test2()
21 {
22     printf("默认int型\n");
23     return 10;
24 }

五、函数的易错点

   1、默认情况下,不允许有函数的名称一样

   2、函数不能嵌套定义

   3、函数不能重复定义,但是可以重复声明

   4、如果有函数的声明,没有函数的定义

      ① 编译可以通过,因为编译器只会检测语法合不合理,并不会检测函数有没有定义

      ②  链接报错,因为链接的时候会检测函数是否定义

  

1 //代码举例
2 // 函数的声明
3 void printLine();
4 // 函数的定义
5 
6 void printLine()
7 {
8     printf("--------\n");
9 }

六、 include的简单用法

    1、 作用:拷贝右边文件的所有内容到#include所在的位置

    2、 自定义的文件用"",系统自带的文件用<>

    3、 #include <stdio.h>的目的:拷贝printf函数的声明

 1 //代码举例
 2 #include <stdio.h>
 3 
 4 int main()
 5 {
 6     printf("include的使用方法\n");
 7     
 8 //#include "gaizuojia/first.txt"
 9 #include "/Users/gaizuojia/Desktop/代码/include/gaizuojia/first.txt"
10     return 0;
11 }

七、多文件的开发

  (一) 好处:

      1、利于团队合作

      2、方便阅读

      3、 多人修改,效率更高

  (二)用法:

      1.函数的定义放.c文件,函数的声明放.h文件

      2.如果要使用某个.c文件中定义的函数,只需要#include这个.c文件对应的.h文件

      3.h文件的作用:被别人拷贝。编译链接的时候不需要管.h文件

      

//代码举例
//主函数的编写
#include <stdio.h>
#include "divided.h"

int main()
{
    int score1 = 100;
    int score2 = 70;
    
    int c = average(score1, score2);
    int d = sum(score1, score2);
    
    printf("平均分是%d\n", c);
    printf("总分是%d\n", d);
    
    
    printf("e=%d\n", e);
    
    return 0;
}
 1 //代码举例
 2 //divided的.c文件(基本运算)
 3 int average(int a, int b)
 4 {
 5     return (a + b)/2;
 6 }
 7 
 8 int sum(int a, int b)
 9 {
10     return a + b;
11 }
12 
13 int minus(int a, int b)
14 {
15     return a - b;
16 }
17 
18 int multiply(int a, int b)
19 {
20     return a * b;
21 }
1 //代码举例
2 //divided的.h头文件(基本运算函数的声明)
3 int average(int a, int b);
4 int sum(int a, int b);
5 int minus(int a, int b);
6 int multiply(int a, int b);

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。