当前位置:网站首页>函数(1)
函数(1)
2022-07-30 06:58:00 【我可是ikun啊】
目录
本章需要了解的重点主要包括以下几点:
一:函数是什么?
用官方的话来解释就是:
二:函数的分类:
分为两种
1.由编译器提供的可以完成各种功能的叫做库函数。
2.由我们自己去写的函数,可以完成自己需要的功能叫做自定义函数。
库函数:
在我们编写代码的过程中频繁出现了我们所需要的某些功能,而不同的程序员写出了不同的代码,它们不是业务性的代码。我们在开发的过程中每个程序员都可能用的到,为了解决这种大量且重复的代码,开发者提供了库函数这一概念,方便程序员 进行软件开发为了支持可移植性和提高程序的效率。
最常见有printf用于输出,strcpy用于复制字符串,strlen用于计算数组大小,等等等等。 而对于这些我们是否都需要去记忆,答案是否定的。有一个专门的网站提供给我们去查找所有的库函数:www.cplusplus.com只能在这里看英文版的,想看中文版的是http://zh.cppreference.com这个网站。我们可以在里面查找到任意一个库函数,包括他们存在的头文件。
在使用某个库函数时,必须要加上#include<头文件名>,我们并不需要记住所有的库函数,只需要学会查询即可。
自定义函数:
对于库函数而言,它并不能解决所有问题,要是能的话,还需要程序员做什么呢?
所以我们学习的重点就在于自定义函数。
例如:设计一个函数,求两个数的最大值
#include <stdio.h>
int max(int x, int y) {
return (x>y)?(x):(y);
}
int main()
{
int num1 = 10;
int num2 = 20;
int max = max(num1, num2);
printf("max = %d\n", max);
return 0;
}
在例如写一个函数,交换两个数的值,
#include <stdio.h>
void swap1(int x, int y) {
int tmp = 0;
tmp = x;
x = y;
y = tmp;
}
int main()
{
int num1 = 1;
int num2 = 2;
swap1(num1, num2);
printf("swap1: num1 = %d num2 = %d\n", num1, num2);
return 0;
}
对于这个swap函数并不能得到我们想要的结果。
它似乎并没有交换num1和num2的值这是为什么呢?
三:函数的参数:
实际参数(实参):
形式参数(形参):
那么要解决上面那道例题该如何呢?
我们这里需要用到函数的调用。
四:函数的调用
传值调用
函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
传址调用
#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;
}
结果如下
这才正真的将值调换
我们这里&num1和&num2所传进去的都是地址,所以x、y对应的也都是地址,那么我们要得到地址中存放的数据,就用到了解引用操作符 ' * ' 。在swap2中改变x和y就是改变main中的num1和num2。
五:结束语:
本章先简单的介绍部分函数基础,下一章将介绍函数更多重点。当然想要更好的的掌握函数还是需要多写代码,多做练习。
边栏推荐
猜你喜欢
随机推荐
IDEA设置System.out.println()和main方法快捷键
Selected as one of the "Top Ten Hard Core Technologies", explaining the technical points of Trusted Confidential Computing (TECC) in detail
C# 使用RestSharp 实现Get,Post 请求(2)
Max Sum Plus Plus HDU - 1024
typescript6-简化运行ts的步骤
go : delete database data using grom
40.【vector的运用】
go : use gorm to modify data
MySQL基础篇【命名规范】
雷总个人博客看到
ES: 箭头函数和包裹它的代码共享相同的this
DP5340 domestic replacement for CM5340 stereo audio A/D converter chip
02 多线程与高并发 - synchronized 解析
【防作弊】Unity防本地调时间作弊
go : go-redis list operation
linux安装mysql8参考指引
申请内存,std::transform和AVX256指令集用例和执行速度比较
taro package compilation error
Goto statements
MySQL题外篇【ORM思想解析】