C语言学习笔记 Day8(函数)

Day8 内容梳理:

1、Chapter 6  函数:

       6.0 概述

                函数的分类、作用

        6.1 定义函数

                定义的格式

        6.2 调用函数

                实参 & 形参

                调用无参函数

                调用有参函数

        6.3 声明函数

                声明的概念、格式

        6.4 终止函数

                exit和return在不同函数中的区别

        6.5 多文件编程

                设置主文件 / 创建头文件 / 导入头文件

Chapter 6  函数

6.0 概述

函数的分类(2种):

        系统函数(库函数):由编译系统提供,用户无需自己定义即可直接使用。

        用户定义函数:用户自命名的函数,发挥特定功能

函数的作用:

        减少代码冗余;让代码更加模块化,有利于程序的阅读、修改和完善。

6.1 定义函数

定义的格式:

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

{

代码

return 0;

}

返回值的类型:

        void:如果是void的话,可以不写return或写return;

        返回值:如果函数返回值类型和return中的类型不一致,则以前者为准

定义函数的例子:

补充:在不同函数里的变量可以重名,因为作用域不同。

在各函数里定义的变量只会作用于本函数,执行完该函数,就从内存中删除。全局变量则不可以与局部变量重名。

6.2 调用函数

(1)实参 & 形参

参数分为两大类:实参和形参

实参有具体的值。

形参没有具体的值,只包含内存地址,其他参数可访问该内存地址。

在函数调用过程,传递的是实参,将具体的值通过定义的函数传递过去(比如main里面的a=10和b=20)

而在函数定义过程中,传递的是形参(比如add里面的a和b,只有数据类型而没有具体数值)

在函数调用结束,该函数(所有变量以及返回值)会在内存中被销毁,这是系统在自动维护内存。所以往往会用一个变量来暂存函数的返回值(比如上图中的int c = add(a, c); 但是对于没有返回值的函数,形参无法被赋值后传回给实参,如下。)

❗ 实参对形参的数据传递是单向传递,只能由实参传递给形参,不能由形参传回给实参。

例子:

在swap函数内部再打印一下a、b,能发现swap函数内的确发生了交换,但是参数的值没能从swap()中的形参a、b传递回main()里的实参a、b

打印语句中用了缩进,以区分main()和swap()中的变量a、b的数值

总结来看,再执行一个被调用的函数时,形参的值如果发生改变,则不会影响主函数中实参的值。

(2)调用无参函数

返回值类型处写void,以及参数列表为空

无参函数调用的例子:

(3)调用有参函数

参数列表中,各个参数之间用逗号隔开。

传递参数时,实参列表和形参列表的长度、类型应该相同,而且变量应该按顺序一一对应上。

实参可以是常量、变量或表达式。但无论是哪种类型,各参数都应在函数调用前被定义到、被赋到确定的值。

6.3 声明函数

如果定义的函数放在main()函数之前,则无需进行函数声明。反之则需要。

声明的格式:extern 数据类型 函数名(参数列表);

(可以忽略extern)

定义是一种特殊的声明。一般把需要分配存储空间的称为“定义”,把不需要分配的成为“声明”。

(对于int a,即是声明又是定义,而extern int b则是声明)

6.4 终止函数(exit & return)

在main()函数中调用exit和return都是终止程序。

在子函数中调用return只是终止子函数,但在子函数中调用exit则是终止整个程序。

6.5 多文件编程

(1)设置主文件

可以把多个文件放在一个项目中,但一个项目只能有一个主文件。

右键点击想要运行的文件,然后选择“设为启动项目”。

(图上这里我只有一个文件,名为“01_基础内容”。如果有多个文件,就能清楚地看到主文件的名字是加粗加黑的,其他文件的名字则是正常字体)

(2)创建头文件

可自定义一些头文件,右键点击“头文件”--“添加”--“新建项”,再点击选择“头文件(.h)”,如图所示。注意这里命名头文件一定是以XXX.h的格式。我命名为了“defined_head.h”。

成功创建头文件之后,最上方的#pragma once不可删去,目的是为了避免多个头文件之间出现互相包含的情况,会报错。

有两种避免重复包含的方法。

一种是:

#pragma once
//声明语句

另一种是:

#ifndef __全大写文件名_H__
#define __全大写文件名_H__

//声明语句

#endif

(3)导入头文件

标准库头文件的导入格式:#include <stdio.h>

自定义头文件的导入格式:#include “XXX.h”

例子:

一般是一个文件对应一个头文件,命名相似,比如01func.cpp对应01func.h

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值