函数

本文详细介绍了函数的概念,包括标准库函数如printf和自定义函数的创建、调用,以及函数声明与定义的重要性。通过实例演示了如何使用库函数和创建二分查找算法。重点讲解了传值调用和传址调用的区别,以及函数声明与定义的位置规则。
摘要由CSDN通过智能技术生成

函数



一、函数是什么?

函数是一个可以进行重用的代码片段。可以简化代码。
1、标准库函数:printf,strlen,system等
2、操作系统库函数。Sleep(windows.h)
3、第三方库函数。
4、自定义函数

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1.库函数

1、IO函数
2、字符串操作函数
3、字符操作函数
4、内存操作函数
5、时间/日期函数
6、数学函数
7、其他库函数
注:
使用库函数,必须包含#include对应的头文件。

2.自定义函数

创建函数/定义函数
代码如下(示例):

#include<stdio.h>
#include<stdlib.h>
int Max(int x,int y)
{
	if(x > y)
	{
		return x;
	}
	return y;
}
int main ()
{
	//使用/调用函数
	int ret = Max(10 , 20);
	printf("%d\n",ret);
	system("pause");
	return 0;
}

说明:
1、int 返回值类型
2、Max 函数名
3、()函数的参数,形式参数,也叫形参
4、{ } 函数体
5、return 函数执行结束,返回一个结果
6、10和20也是参数,实际参数,实参

函数的执行过程:
1、只定义函数的话,函数体内容不会被执行。
2、调用函数的时候才会执行到函数体,进入函数体内部执行。
3、进入函数内部的同时,会进行传参。把实参按照顺序依次赋值给形参。形参和实参的关系是:形参是实参的一份拷贝。
4、遇到return语句,函数就执行结束了。就会回到调用函数的位置,继续往下执行。

3.函数的调用

传值调用
函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
这种传参方式可以让函数和函数外边的变量建立起正真的联系,也就是函数内部可以直接操作函数外部的变量。

4.函数的声明与定义

函数声明:
1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要。
2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。
3. 函数的声明一般要放在头文件中的。
函数定义:
函数的定义是指函数的具体实现,交待函数的功能实现。
C语言的函数,在调用的时候,必须保证函数的定义在调用位置的代码上方,如果在下方,或者其他文件中,此时就会编译失败。
如果要是非要把函数的定义放在下面/其他文件中,那么至少需要现在调用位置的上方加上”函数声明“。
一个工程中,函数定义只能存在一次,但是函数声明可以有很多次。如果函数定义存在多份,就会直接编译失败。

创建一个函数,针对有序数组进行二分查找

代码如下(示例):

#include<stdio.h>
#include<stdlib.h>
int binarySearch(int arr[],int len ,int toFind)
{
	//待查找区间就是[left,right]
	int left = 0;
	int right = len - 1;
	while(left <= right)
	{
		int mid = (left + right) / 2;
		if(arr[mid] < toFind)
		{
			left = mid + 1;
		}
		else if(arr[mid] > toFind)
			{
				right = mid - 1;
			}
			else
			{
				return mid;
			}
	}
	return -1;
}
int main()
{
	int arr[] = {2,3,5,7,8,10};
	intlen = sizeof(arr)/sizeof(arr[0]);
	int ret = binarySearch(arr,len ,10);
	printf("ret = %d\n",ret);
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李憨憨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值