当前位置:网站首页>C语言中函数是什么?编程中的函数与数学中的函数区别?理解编程语言中的函数
C语言中函数是什么?编程中的函数与数学中的函数区别?理解编程语言中的函数
2022-06-28 04:43:00 【萌萌沐兮】
好多小伙伴刚学编程的时候,不知道函数和方法的区别是什么。java中叫方法,C语言又叫函数,javascript也叫函数...晕头转向。
其实,他们来自两个单词:function(函数)与method(方法)。作用基本上相同,不过,我个人的理解是:方法更加依赖于类,存在在对象/类中叫做方法,函数则不是。而后来逐渐就不是特别区分了。
在刚学编程语言的时候,有些小伙伴不知道编程语言中函数的作用。今天,我就用数学函数的角度解释编程语言中函数的作用!
总所周知,数学中的函数一般是这样的:
y = 2 * x
估计上过八年级以上学过最基本的一次函数估计都可以理解这个式子。
那么,当他在x取不同值时,y也可以相应的变化。
如果将这个式子写在代码中,看起来就成了将 2*x 的结果赋值给 y ,y接收到的就是2*x表达式的返回值!
注意这个词:返回值。在未来你会反复的听到这个词。
此时如果让你写个分别计算当x是2、3、8、10的值,
数学中,将以上值一个个代入x中进行操作,得出对应的y
编程语言中也一样,
不过,假设后面要进行相同的某些较复杂的操作(这里就输出一句:代入xxx进行运算)
(为了方便演示,拆开写了):
#include <stdio.h>
int main(){
int x,y;
x = 2;
printf("代入2进行运算\n");
y = 2*x;
printf("%d\n",y);
x = 3;
printf("代入3进行运算\n");
y = 2*x;
printf("%d\n",y);
x = 8;
printf("代入8进行运算\n");
y = 2*x;
printf("%d\n",y);
x = 10;
printf("代入10进行运算\n");
y = 2*x;
printf("%d\n",y);
return 0;
}因为做的操作过于简单,但如果是个很复杂的式子,这样写就会显得代码冗余。那么就可以利用到函数这个概念。
先把C语言函数的格式讲一下吧!
[返回值类型] [函数名] ([函数参数]...){
// 使用传过来的参数执行的操作
}
返回值类型可以是基本数据类型(如int,char,float,double...),返回的数据就是经过处理函数的数据!
那么,刚刚的式子就可以封装成一个函数(假设函数名就叫a):
int a(int x){
printf("代入了%d进行计算!\n",x);
return 2 * x;
}这是最基本的一个C语言函数的格式,小括号中间的是参数。想对什么值做处理,就传入什么值即可(也可以选择声什么都不传,但是小括号不能省略),传入的类型与定义参数的类型必须相同,接收返回值的类型必须跟返回值类型相同!(如这个例子返回值为int类型,接收也用int类型)
此时,原来的代码就可以写成,也可以完成与刚刚相同的操作:
# include <stdio.h>
int main(){
int x,y;
x = 2;
y = a(x);
printf("%d\n",y);
x = 3;
y = a(x);
printf("%d\n",y);
x = 8;
y = a(x);
printf("%d\n",y);
x = 10;
y = a(x);
printf("%d\n",y);
return 0;
}有些同学又会觉得,这还要返回一个值,然后再输出。函数既然能复用,为什么不全封装进去?确实也可以这样,不过这时就要注意了:函数不需要返回什么给调用者的时候,返回值类型就可以写void了,不过此时,再也不能拿任何变量来接收这个函数的返回值了。
完整代码如下:
#include <stdio.h>
void a(int x){
// 声明一个变量保存x处理后的结果
int y;
printf("代入了%d进行计算!\n",x);
y = 2 * x;
printf("%d\n",y);
}
int main(){
int x;
// 调用函数的时候函数内会输出
// 所以不需要一个个写printf
x = 2;
a(x);
x = 3;
a(x);
x = 8;
a(x);
x = 10;
a(x);
return 0;
}此时,编程中的“函数”的概念与数学中“函数”的概念完美结合起来。但明显编程中的函数远比数学中函数更加的灵活多变!
边栏推荐
- A bit of knowledge - online resources on Chinese Learning
- 汇编常用指令
- 2022-06-27:给出一个长度为n的01串,现在请你找到两个区间, 使得这两个区间中,1的个数相等,0的个数也相等, 这两个区间可以相交,但是不可以完全重叠,即两个区间的左右端点不可以完全一样。
- Detailed reading of the thesis: implementing volume models for handowriting text recognition
- [proteus simulation] timer 1 external counting interrupt
- native关键字的作用
- Standard particle swarm optimization C language program
- Analysis of distributed transaction solution Seata golang
- LeetCode 88:合并两个有序数组
- RxSwift --(1)创建一个项目
猜你喜欢

100+数据科学面试问题和答案总结 - 机器学习和深度学习

Bitlock recovery occurs in win 10, and the blue screen error code is 0x1600007e

Feign remote call fallback callback failed, no effect

A doctor's 22 years in Huawei (full of dry goods)

玩转双指针

控制器的功能和工作原理

LeetCode 88:合并两个有序数组

CI & CD must be known!

Matlab exercises -- routine operation of matrix

openssl客户端编程:一个不起眼的函数导致的SSL会话失败问题
随机推荐
Why are cloud vendors targeting this KPI?
Oracledata installation problems
学习太极创客 — MQTT 第二章(六)MQTT 遗嘱
灵活的IP网络测试工具——— X-Launch
JS reverse massive star map sign signature
CUPTI error: CUPTI could not be loaded or symbol could not be found.
A bit of knowledge - online resources on Chinese Learning
2022年安全员-A证考试题库及模拟考试
100+数据科学面试问题和答案总结 - 机器学习和深度学习
The second round of free public classes of the red team is coming ~ 8:00 tomorrow night!
Excel knowledge and skills summary
Congratulations to myself, official account has more than ten thousand fans
2022年低压电工考题及答案
禁用右击、键盘打开控制台事件
native关键字的作用
June 27, 2022: give a 01 string with a length of N. now please find two intervals so that the number of 1 and the number of 0 in the two intervals are equal. The two intervals can intersect, but not c
?位置怎么写才能输出true
Has anyone ever used CDC to synchronize to MySQL with a deadlock?
学习太极创客 — MQTT 第二章(五)心跳机制
现代交换原理MOOC部分题目整理