C语言基础知识:函数的声明和使用

目录

函数的声明

1.定义顺序

2.函数的声明

3.函数的声明格式

多源文件开发

1.为什么要有多个源文件

2.将sum函数写到其他源文件中

3.在main函数中调用sum函数

4.编译所有的源文件

5.链接所有的目标文件

#include

1.#include的作用

2.#include可以使用绝对路径

3.#include <>和#include ""的区别

4.stdio.h

5.头文件.h和源文件.c的分工


函数的声明

1.定义顺序

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

1 int sum(int a, int b) {
2     return a + b;
3 }
4 
5 int main()
6 {
7     int c = sum(1, 4);
8     return 0;
9 }

第5行定义的main函数调用了第1行的sum函数,这是合法的。如果调换sum函数和main函数的顺序,在标准的C编译器环境下是不合法的(不过在GCC编译器环境下只是一个警告)

2.函数的声明

如果想把函数的定义写在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 }

在第11行定义了sum函数,在第2行对sum函数进行了声明,然后在第6行(main函数中)就可以正常调用sum函数了。

3.函数的声明格式

1> 格式

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

只要你在main函数前面声明过一个函数,main函数就知道这个函数的存在,就可以调用这个函数。而且只要知道函数名、函数的返回值、函数接收多少个参数、每个参数是什么类型的,就能够调用这个函数了,因此,声明函数的时候可以省略参数名称。比如上面的sum函数声明可以写成这样:

int sum(int, int);

究竟这个函数是做什么用的,还要看函数的定义。

2> 如果只有函数的声明,而没有函数的定义,那么程序将会在链接时出错

下面的写法是错误的:

1 int sum(int a, int b);
2 
3 int main()
4 {
5     
6     sum(10, 11);
7 
8     return 0;
9 }
  • 在第1行声明了一个sum函数,但是并没有对sum函数进行定义,接着在第6行调用sum函数
  • 这个程序是可以编译成功的,因为我们在main函数前面声明了sum函数(函数的声明和定义是两码事),这个函数声明可以理解为:在语法上,骗一下main函数,告诉它sum函数是存在的,所以从语法的角度上main函数是可以调用sum函数的。究竟这个sum函数存不存在呢,有没有被定义呢?编译器是不管的。在编译阶段,编译器并不检测函数有没有定义,只有在链接的时候才会检测这个函数存不存在,也就是检测函数有没有被定义。
  • 14
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值