六、函数:函数的定义与调用;函数的声明;多文件编程;exit函数与return关键字

 

复制代码
函数;函数的定义;函数的定义与调用;
====================================================================================================================
C 程序是由函数组成的,我们写的代码都是由主函数 main()开始执行的。函数是 C 程序的基本模块,是用于完成特定任务的程序代码单元。

从函数定义的角度看,函数可分为系统函数和用户定义函数两种:
    系统函数,即库函数:这是由编译系统提供的,用户不必自己定义这些函数,可以直接使用它们,如我们常用的打印函数printf()。
    用户定义函数:用以解决用户的专门需要。



函数定义的一般形式:
    返回类型 函数名(形式参数列表)
    {
        数据定义部分;
        执行语句部分;
    }

形参列表:在定义函数时指定的形参,在未出现函数调用时,它们并不占内存中的存储单元,因此称它们是形式参数或虚拟参数,简称形参,表示它们并不是实际存在的数据,所以,形参里的变量不能赋值。
    在定义函数时指定的形参,可有可无,根据函数的需要来设计,如果没有形参,圆括号内容为空,或写一个void关键字


函数的定义
//1: right, 类型+变量
void max(int a, int b){}

//2: error, 只有类型,没有变量
void max(int, int){}

//3: error, 只有变量,没有类型
int a, int b;
void max(a, b){}

// 没形参, 圆括号内容为空
void max(){}

// 没形参, 圆括号内容为void关键字
void max(void){}
-------------------------------------------------------------------------------------------------------------------
//函数的定义与调用
#include <stdio.h>

void print_test()
{
    printf("this is for test\n");
}
int main()
{
    print_test();    // print_test函数的调用
    return 0;
}
函数;函数的定义;函数的定义与调用;示例
复制代码

 

复制代码
函数的声明;函数定义和声明的区别
====================================================================================================================
函数的声明
    如果使用用户自己定义的函数,而该函数与调用它的函数(即主调函数)不在同一文件中,或者函数定义的位置在主调函数之后,则必须在调用此函数之前对被调用的函数作声明。
    所谓函数声明,就是在函数尚在未定义的情况下,事先将该函数的有关信息通知编译系统,相当于告诉编译器,函数在后面定义,以便使编译能正常进行。

    注意:一个函数只能被定义一次,但可以声明多次。

函数的声明示例:(其实就是函数的定义,但是剥离了函数体)
    void max(int a, int b);
    void max(int, int)
    
-------------------------------------------------------------------------------------------------------------------
函数定义和声明的区别:
    1)定义是指对函数功能的确立,包括指定函数名、函数类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。
    2)声明的作用则是把函数的名字、函数类型以及形参的个数、类型和顺序(注意,不包括函数体)通知编译系统,以便在对包含函数调用的语句进行编译时,据此对其进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。
函数的声明;函数定义和声明的区别
复制代码

 

复制代码
exit函数与return关键字
=============================================
exit函数: #include <stdlib.h>

return关键字:
    返回当前函数调用,将返回值返回给调用者。

exit()函数:
    退出当前程序。
exit函数与return关键字
复制代码

 

复制代码
多文件编程:实现功能的模块化,可以把不同的功能放在不同的.c文件中;然后编译到一起,生成一个exe文件
可以将多文件编程分为3部分:
0.编写功能.c文件,函数封装功能实现
1.编写头文件守卫:(为了避免同一个文件被include多次,C/C++中有两种方式,一种是 #ifndef 方式,一种是 #pragma once 方式。)
    #ifndef __XXXX_H__ // include guard for 3rd party interop
    #define __XXXX_H__
    ...头文件内容(#include <xxx.h>;#define 宏定义;函数声明;类型定义)
    #endif 
3.main.c文件引入自定义头文件 #include "xxxx.h"

-----------------------------------------------------------------------
    <>包裹的头文件为系统库头文件。
    ""包裹的头文件为用户自定义头文件。


    防止头文件重复包含:头文件守卫。

        1#pragma once            --- windows专用

        2) #ifndef __HEAD_H__        <--- head.h   (这种方式各平台通用)

            #define __HEAD_H__

            .... 头文件内容

            #endif
多文件编程
复制代码

 

posted @   雲淡風輕333  阅读(180)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示