写在前面:
今天我们需要学习和了解的是C语言中的函数,其中C语言的函数划分为库函数和自定义函数两种.接下来我们一起探究两者之间的关系.
一.C语言中函数的分类
- 库函数
- 自定义函数
二.库函数
库函数到底是什么呢?
顾名思义,可以通俗的理解为库里面的函数.这些函数都是频繁使用的,为了提高编程效率,将一些常用的函数封装成库,后面直接调用使用.
想要进一步了解C语言中库函数的同学可以移步下面的网站进行阅览:cplusplus.com - The C++ Resources Networkhttp://www.cplusplus.com/
简单的总结一下,C语言中常用的库函数有:
- IO函数
- 字符串操作函数
- 字符操作函数
- 内存操作函数
- 时间/日期函数
- 数学函数
- 其它库函数
下面我们就拿一些比较常见的库函数了解一下:
strcpy:字符串拷贝函数
char* strcpy(char* dest,const char* src);
printf:输出函数
int printf(const char* format,...);
memset:填充内存块函数
void* memset(void* ptr,int value,size_t num);
注意:使用库函数时必须包含#include对应的头文件
二.自定义函数
自定义函数和库函数一样,有函数名,返回值类型和函数参数.但是不一样的是这些都是我们自己来设计.
函数的组成:
ret_type fun_name(paral,*){
statement;
}
ret_type:返回类型
fun_name:函数名
paral: 函数参数
刚开始学,我们可以先写一个比较简单的自定义函数.比如:写一个函数找出两个整数中的最大值.
int get_max(int x,int y){
return x > y ? x : y;
}
很多同学刚开始学函数的时候,都不知道返回值的作用是什么,该如何设置返回值.首先这个函数是我们自定义的,我们可以根据自己的需求对这个函数进行设计,设计的三个方面就是 函数返回值,函数名,函数参数.
三.函数的嵌套调用和链式访问
嵌套调用:在一个函数中调用另一个函数.
如下所示:
void new_line() {
printf("hehe\n");
}
void three_line() {
for (int i = 0; i < 3; i++) {
new_line();
}
}
int main() {
three_line();
return 0;
}
链式访问:把一个函数的返回值作为另一个函数的参数.
如下所示:
#include <stdio.h>
#include <string.h>
int main() {
char arr[20] = "hello";
int ret = strlen(strcat(arr, "bit"));
printf("%d\n", ret);
return 0;
}
四.函数的声明和定义
函数声明的作用:
- 告诉编译器有一个函数叫什么,参数是什么,返回值类型是什么.但是具体是不是存在,无关紧要.
- 函数的声明一般出现在函数的使用之前,要满足先声明后使用.
- 函数的声明一般要放在头文件中
函数定义的作用:
函数的定义是指函数的具体实现,交代函数的功能实现.
注意:函数定义在main函数之后,则需要在调用该函数前进行声明.为了代码的良好规范,最好在main函数之前进行声明.若函数定义在main函数之前则不需要声明.
除此之外还可以函数声明与定义分离:函数声明放在.h头文件中,如下所示:
test.h文件:放置函数的声明:
#ifndef __TEST_H__
#define __TEST_H__
//函数的声明
int add(int x,int y);
#endif
test.c放置函数的实现:
#include "test.h"
int ADD(int x,int y){
return x+y;
}