C语言中的函数分类:库函数与自定义函数。
一.库函数
为了提高程序员的编码效率,c语言内置了一些函数,这些函数统称为库函数。
c语言常见的库函数有:
1.io函数
2.字符串操作函数
3.字符操作函数
4.内存操作函数
5.时间/日期函数
6.数学函数
7.其它函数
极其多的库函数不可能全部记忆,可以在www.cplusplus.com网站查看c语言内置的所有库函数以及调用方法。
二.自定义函数
1.自定义函数的格式
ret_type fun_name(paral,*)
{
statement //语句项
}
//ret_type 函数类型
//fun_name 函数名称
//paral 函数参数
举例:完成交换两个整形变量的值。
//交换两数的值
include<stdio.h>
//函数:交换两个数的值
void Swap2(int *px, int *py)
{
int tmp = 0;
tmp = *px;
*px = *py;
*py = tmp;
}
int main()
{
int num1 = 1;
int num2 = 2;
Swap2(&num1, &num2);
printf("Swap2::num1 = %d num2 = %d\n", num1, num2);
return 0;
三.函数的参数
1.实际参数
真实传递给函数的参数,叫实参;
例如常量,变量,函数,表达式。
2.形式参数
形参表示函数后面括号里的值,只有在调用的过程中被分配内存单元,函数调用完成后自动销毁。
四.函数的调用
1.传值调用
形参与实参均占有内存,对形参修改不影响实参。
2.传址调用
将函数外部的变量地址传送给形参,这种调用使得函数内部与函数外部建立真正的联系,使得函数内部可以直接操作函数外部。
五.函数的嵌套调用与链式访问
1.嵌套调用
函数和函数之间相互组合,相互调用 ,下面为一个函数嵌套的例子。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void new_line()
{
printf("hehe\n");
}
void three_line()
{
int i = 0;
for (i = 0; i < 3; i++)
{
new_line();
}
}
int main()
{
three_line();
return 0;
}
2.链式访问
把一个函数的返回值作为另一个函数的参数
六.函数的定义
1.test.h 放置函数的声明。
#ifndef __TEST_H__
#define __TEST_H__
//函数的声明
int Add(int x, int y);
#endif //__TEST_H__
2.test.c放置函数的实现
#include "test.h"
//函数Add的实现
int Add(int x, int y)
{
return x+y;
}
七.函数的递归
程序调用自身的编程技巧称为递归( recursion)。
递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接
调用自身的
一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,
递归策略
只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的主要思考方式在于:把大事化小。
存在限制条件,当满足这个限制条件的时候,递归便不再继续。
每次递归调用之后越来越接近这个限制条件。
//将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;
}