**C语言初阶函数
`
文章目录
一、函数介绍
1.C语言中函数的分类
C语言中函数的分类:1.库函数 2.自定义函数
2.常用的库函数
(1) IO函数 :printf scanf getchar putchar
(2) 字符串操作函数:strcmp strlen strcpy(拷贝字符串)
(3) 字符操作函数:toupper(小写转大写函数)
(4) 内存操作函数:memcpy memcmp memset(内存设置) memory(记忆内存)
(5) 时间/日期函数:time
(6) 数学函数:sqrt pow
(7) 其他库函数
3.如何使用库函数
博主在这里推荐两个途径:
(1) MSDN
(2) www.cplusplus.com
注:使用库函数必须引用#include的头文件!
4.自定义函数
(1) 自定义函数格式
char * strcpy ( char *strDestination const char*strsource)
{
语句;
}
(2) 格式组成
函数返回类型:char*
函数名:strcpy
形参:char *strDestination const char*strsource
函数体:语句
5.函数的调用
(1) 传值调用:改变形参,而不会改变实参
(2) 传址调用:形参值随着地址一起传递的方式`
#include<stdio.h>
void Add(int* p)
{
(*p)++;
}
int main()
{
int num = 0;
Add(&num);
printf("%d\n", num);//1
Add(&num);
printf("%d\n", num);//2
return 0;
}
二、函数的嵌套调用和链式访问
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.链式访问
把一个函数的返回值作为另一个函数的参数
#include<stdio.h>
int main()
{
printf("%d", printf("%d", printf("%d", 43)));//4321
return 0;
}
//printf返回的是打印在屏幕上的个数
3.函数的声明和定义
当函数的定义放在 main 函数后面时,因为代码是从前往后检测,故会报错,此处就要声明函数
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
//函数声明---告知
int Add(int, int);
int c = Add(a, b);
printf("%d\n", c);//30
return 0;
}
int Add(int x, int y)
{
return x + y;
}
三、函数递归
递归思考方式:大事化小
递归的两个必要条件:
① 存在限制条件,当满足这个限制条件的时候,递归便不在继续
② 每次递归调用之后越来越接近这个限制条件
//输入1234,输出1 2 3 4
#include<stdio.h>
void print(unsigned int n)
{
if (n > 9)
{
print(n / 10);
}
printf("%d ", n % 10);//1 2 3 4
}
int main()
{
unsigned int num = 0;
scanf("%u", &num);//1234
//递归——函数调用自己
print(num);
//printf函数可以打印参数部分数字每一位
return 0;
}
写递归代码时:
1.不能死递归,都有跳出条件,每次递归逼近跳出条件
2.递归层次不能太深