十七.函数的基本写法

函数的基本写法

一.函数的介绍

1.1什么是函数及其函数的作用
函数是一组一起执行一个任务的语句.
每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数.
您可以把代码划分到不同的函数中,如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的.
而我们等会要将到得函数声明是告诉编译器函数的名称、返回类型和参数等信息。
而函数定义提供了函数的实际主体.
1.2 库函数
C 标准库提供了大量的程序可以调用的内置函数.
例如:
函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置.
1.3 函数的其他叫法
函数还有很多叫法,比如方法、子例程或程序,更甚至被叫成CALL 等等.

二.函数的定义

返回值类型 函数名(参数列表)
{
//函数体
}
2.1 返回值类型:
1.用于我们函数执行的结果需要返回给调用方使用.
2.例如有的函数是计算2个数相加的,我们需要拿到相加的结果,就可以通过返回值来得到这个结果.
3.有的函数不需要返回值,我们只需要用void无类型就行了例如void BB(){};.

2.2 函数名:
1.可以由下划线 字母 数字 组成 同样数字不能开头
2.其实就是给函数取个名字 我们方便调用

2.3 参数:
1.为了告诉调用者 我们需要传入什么类型的参数
2.这个参数 又叫做 形参
3.而我们调用函数 实际传进去的参数叫做 实参 这些很好理解
4.有的函数也可以没有参数的 我们只需要一个()就行了

2.4 函数体:
1.说的简单的就是 一些代码的语句放在这个函数体内我们调用这个函数也就相当于执行了这个函数体内的代码语句
举例:
//2个数相减 返回结果
int Sub(int a,int b)
{
int c=a+b;
return c;
}

三.函数的申明

返回值 函数名(参数)

3.1 作用

函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
举例:
int Sub(int a,int b)
另外种写法就是在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明
int Sub(int ,int )

3.2 注意定义和声明的顺序

第一种情况:

当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。
如下我们可以看到在a.c文件中定义了该函数sub()
如果想在b.c源文件中调用该函数,那么就需要在main()函数之前去声明一次这个函数,就可以成功编译了
不妨我们在编译器去试一试,看看如果不声明会报什么错误
然后再把声明写上,再看看能否编译成功
//a.c
int Sub(int a,int b)//函数的定义
{
int c=a-b;
return c;
}
//b.c
#include"stdio.h"
int Sub(int a,int b);//函数的声明
void main()
{
int c=Sub(2,1);
}
注意:这是C语言的写法因为我们看到文件后缀是.c,而下面的几种情况是.cpp是C++的写法

第二种情况:

我们发现在b.cpp源文件中要调用Sub()函数,但是b.cpp源文件中没有该函数的申明或者定义
此时发现在a.cpp有该函数的定义同时申明写在了a.h中 ,那么我们需要在b.cpp中调用该函数的时候包含头文件a.h
//a.h
int Sub(int a,int b);//函数的申明
//a.cpp
int Sub(int a,int b)//函数定义
{
int c=a-b;
return c;
}
//b.cpp
#include"stdio.h"
#include"a.h"
void main()
{
int c=Sub(2,1);
}

第三种情况:

同一个源文件中,要注意函数定义的顺序,如果在调用该函数之前没有定义函数,就需要先声明下,这时候我们就可以在调用该函数之后来定义这个函数了
如下我们可以看到main()函数中调用了Sub()函数
但是在main()函数之前没有定义这个Sub()函数,这时候就需要先声明一下,我们就可以在main()下面去定义这个函数了
如果在main()函数之前没有去声明这个Sub()函数,那么程序是找不到这个sub()函数的,因为该函数处于main()函数下面
#include"stdio.h"
int Sub(int a,int b)//函数申明
void main()
{
int c=Sub(2,1);
}
int Sub(int a,int b)//函数定义
{
int c=a-b;
return c;
}

迪大交流群:285530835

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迪大学院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值