C函数的介绍

阿鲤总结了一下自己学习的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语言常用的库函数都有;

序号常用的库函数
1IO函数
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. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要。
  2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。
  3. 函数的声明一般要放在头文件中的。

函数的定义:
函数的定义是指函数的具体实现,交代函数的功能实现。

八:函数递归

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;
}

本题递归图

好了。以上就是函数介绍的全部内容啦;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值