函数的声明与定义 include .h .c

1函数的定义

函数定义的格式:1定义有参函数

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

                              { 执行语句

                                返回语句

                               }

                              2定义无参函数

                              返回值类型 函数名()

                               {

                                 函数体}

                              3定义空函数

                               返回值类型  函数名()

                                 {}

     

int main()
{
    int c = sum(1, 4);
    return 0;
}

在C语言中,函数的定义顺序是有讲究的:默认情况下,只有后面定义的函数才可以调用前面定义过的函数。

如果想把函数的定义写在main函数后面,而且main函数能正常调用这些函数,那就必须在main函数的前面进行函数的声明 1 // 只是做个函数声明,并不用实现

 2 int sum(int a, int b);
 3 
 4 int main()
 5 {
 6     int c = sum(1, 4);
 7     return 0;
 8 }
 9 
10 // 函数的定义(实现)
11 int sum(int a, int b) {
12     return a + b;
13 }
但是在链接的时候会报错,因为没有检测到sum的定义 C语言在编译运行时候不会检测函数有没有定义,但是在进行链接时候会检测。

2 函数的声明

         格式

返回值类型 函数名 (参数1, 参数2, ...)

只有声明没有定义在进行链接时会报错 上面提到过

3多源文件开发

原因

 

1> 在编写第一个c语言程序的时候已经提到:我们编写的所有C语言代码都保存在拓展名为.c的源文件中,编写完毕后就进行编译、链接,最后运行程序。

 

2> 在前面的学习过程中,由于代码比较少,因此所有的代码都保存在一个.c源文件中。 但是,在实际开发过程中,项目做大了,源代码肯定非常多,很容易就上万行代码了,甚至上十万、百万都有可能。 这个时候如果把所有的代码都写到一个.c源文件中,那么这个文件将会非常庞大,也非常恶心,你可以想象一下,一个文件有十几万行文字,不要说调试程序了,连阅读代码都非常困难。

 

3> 而且,公司里面都是以团队开发为主,如果多个开发人员同时修改一个源文件,那就会带来很多麻烦的问题,比如张三修改的代码很有可能会抹掉李四之前添加的代码。

 

4> 因此,为了模块化开发,一般会将不同的功能写到不同的.c源文件中,这样的话,每个开发人员都负责修改不同的源文件,达到分工合作的目的,能够大大提高开发效率。 也就是说,一个正常的C语言项目是由多个.c源文件构成

3.1如何sum函数写到其他源文件中

1 写下源文件

1> main.c文件

1 int main()
2 {
3 
4     return 0;
5 }

2> sum.c文件

1 int sum(int a, int b)
2 {
3     return a + b;
4 }

2将sum函数调入main函数中

main.c文件应该写成下面这样

 1 #include <stdio.h>
 2 
 3 int sum(int, int);//声明
 4 
 5 int main()
 6 {
 7     int c = sum(10, 11);
 8     
 9     printf("c is %d\n", c);
10     
11     return 0;
12 }

3.编译所有的源文件,在编译后生成.0目标文件,,然后把两个目标文件进行链接生成执行文件

include

include<>或者include"",是两种不同的运行路径,但都会把include后的文件拷贝到include中

函数的声明一般放在.h头文件中,函数的定义一般放在.c源文件中

 

 

 

 






























posted @   流年,  阅读(451)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示