阿鲤总结了一下自己学习的c语言函数,现在分享给大家
阿鲤将以以下顺序向大家介绍函数;(附递归图)
| 1 | 函数是什么 |
|---|---|
| 2 | 库函数 |
| 3 | 自定义函数 |
| 4 | 函数参数 |
| 5 | 函数调用 |
| 6 | 函数的嵌套调用和链式访问 |
| 7 | 函数的声明和定义 |
| 8 | 函数递归 |
下来,我们就正式向大家介绍;
一:函数是什么?
1:在维基百科中,是这样对c语言中的函数描述的;
在计算机科学中,子程序(函数),是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。
一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库
2:c语言中函数的分类
*库函数
*自定义函数
二:库函数
库函数(Library function)是把函数放到库里,供别人使用的一种方式。方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。调用的时候把它所在的文件名用#include加到里面就可以了。一般是放到lib文件里的。
1:那麽,为什么有库函数呢?
想printf,strcpy等函数在程序员在开发的过程中,需要多次的使用,所以这一类函数就具有了很大的重复性,为了提高开发效率,就把这些函数统一的放到一起,组成了库函数;
2:那麽,怎样学习库函数呢?
在这里,我向大家推荐www.cplusplus.com进行对库函数的学习;(里面有你想要的一切库函数
3:简单的总结,c语言常用的库函数都有;
| 序号 | 常用的库函数 |
|---|---|
| 1 | IO函数 |
| 2 | 字符串操作函数 |
| 3 | 字符操作函数 |
| 4 | 内存操作函数 |
| 5 | 时间/日期操作函数 |
| 6 | 数学函数 |
| 7 | 其他函数 |
#注:使用库函数必须包含#inxlude<>对用的头文件
三:自定义函数
库函数使用很方便,但是有很多函数是库函数没有的;那这就需要程序员自己来写了;这样的函数就是自定义函数;
1:函数的组成
#include<stdio.h>
int fun(para)
{
printf("hello");
}
其中:
| int | 返回类型 |
|---|---|
| fun | 函数名 |
| para | 函数参数 |
eg1:(写一个函数可以找出两个整数中的最大值)
#include<stdio.h>
int Max(int num1, int num2)
{
return num1 > num2 ? num1 : num2;
}
int main()
{
int a = 13;
int b = 14;
int ret = Max(a,b);
printf("%d\n", ret);
system("pause");
return 0;
}
eg2:(写一个函数可以交换两个整型变量的内容)
#include<stdio.h>
void Exchange(int *num1, int *num2)
{
int tmp = 0;
tmp = *num1;
*num1 = *num2;
*num2 = tmp;
}
int main()
{
int a = 13;
int b = 14;
printf("a = %d,b =%d\n", a,b);
Exchange(&a,&b);
printf("a = %d,b =%d\n", a,b);
system("pause");
return 0;
}
四:函数的参数
| 参数类型 | 介绍 |
|---|---|
| 实参 | 真是传给函数的参数,它可以是常量,变量,表达式,函数等;无论哪种类型的量,在进行函数调用时,他们必须有确定的值 |
| 形参 | 形参是函数名后括号内的变量,因为形式参数只有在函数调用时会实例化,所以叫形参,他们必须是有确定的值;因此形式参数只有在函数中有效 |
比如在eg2中;&a,&b是实参,num1,num2是形参;
分析:实参和形参的使用空间不是一样的,所以可以理解为形参是实参的一份临时拷贝
五:函数的调用
函数的调用可分为下面两类
| 调用类型 | 介绍 |
|---|---|
| 传值调用 | 函数的形参和实参分别占据不同的内存块,对形参的修改不会影响实参 |
| 传址调用 | 是把函数外部创建的变量的内存地址传递给函数参数的一种调用方式;这种传参方式可以让函数和函数外边的变量建立起正真的联系,也就是函数内部可以直接操作函数外部的变量。 |
六:函数的嵌套调用和链式访问
1:嵌套调用:(函数和函数之间有机的组合)直接上例子;
eg3:
#include<stdio.h>
void Prt2()
{
printf("I love you three thousand times\n");
}
void Prt1()
{
Prt2();
}
int main()
{
Prt1();
system("pause");
return 0;
}
2:链式访问(把一个的函数的返回值作为另一个函数的参数)
eg4:
int main()
{
char arr[20] = "hello";
//strlen是求一个字符串的长度;strcat是字符串连接函数
int ret = strlen(strcat(arr, "nit"));
printf("%d\n", ret);
return 0;
}
七:函数的声明与定义
函数的声明:
- 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要。
- 函数的声明一般出现在函数的使用之前。要满足先声明后使用。
- 函数的声明一般要放在头文件中的。
函数的定义:
函数的定义是指函数的具体实现,交代函数的功能实现。
八:函数递归
1:什么是递归?
程序调用自身的编程技巧称为递归( recursion)。 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 递归的主要思考方式在于:把大事化小
2:实现递归的两个条件
存在限制条件,当满足这个限制条件的时候,递归便不再继续。
每次递归调用之后越来越接近这个限制条件。
eg5:(接受一个整型值(无符号),按照顺序打印它的每一位。 例如: 输入:1234,输出 1 2 3 4)
#include <stdio.h>
void print(int n)
{
if(n>9)
{
print(n/10);
}
printf("%d ", n%10);
}
int main()
{
int num = 1234;
print(num);
return 0;
}
好了。以上就是函数介绍的全部内容啦;

829

被折叠的 条评论
为什么被折叠?



