函数,是C语言编程中一个很重要的概念,重要到个人认为可以与指针并驾齐驱。好多教材、老师、学习资源都会专门挑出一章来讲函数。我今天也来说说函数,只不过我是从数学课上的函数来引申到C语言中的函数。

先来说说数学课上老师讲的函数概念。我上初中那会儿开始接触数学的函数,最经典的就是二次方程式了,如下:

f(x) = xx + 2x + 1

好多人还记得这个方程式吧!x是参数,xx + 2x + 1是函数式,当x为不同的值时,f(x)具备不同的结果。我们会求当:

x=1时,f(1) = 1*1 + 2*1 + 1 = 4

x=2时,f(2) = 2*2 + 2*2 + 1 = 9

x=3时,f(3) = 3*3 + 2*3 + 1 = 16

…………………………….

f(x)的函数式万万千千,有一次函数,有二次函数,有三次函数,有N次函数,数也数不清。好了,帮各位回忆了下初中数学课程后,我们再来看看C语言编程中的“函数”与数学课上的“函数”有什么区别呢?以f(x) = xx + 2x + 1为例,我可以将其变为C语言中的“函数”,如下:

int f(int x)
{
int result = 0;
result = x*x + 2*x +1;
return result;
}

Look,在这个C语言中的函数中,函数名叫f,参数叫x,里面有一条执行语句:x*x + 2*x +1;最后变量result就是x*x + 2*x +1计算出的值。我们将这个C语言函数与数学的f(x) = xx + 2x + 1做个类比:

数学函数f(x) = xx + 2x + 1 C语言函数int f(int x)

函数名: f f

运算参数:x x

运算式子:xx + 2x + 1 语句x*x + 2*x +1;

运算结果:f(x) result

是不是很相似?所以我觉得C语言中的“函数”概念,应该是借鉴了数学中“函数”的概念了吧。

不过C语言函数蕴含的信息却要比数学函数更多,比如:

1. C语言函数需要为形参指定类型,如int,long等。而数学函数的参数,你想用整型、浮点型还是什么随便你;

2. C语言函数可以没有返回值。数学函数只要有参数代入,都会有一个结果值;

3. C语言一个函数中可以按顺序计算一个表达式、然后再printf些信息、再计算一个表达式等等多个逻辑操作,而每个数学函数只有按照函数式计算一个逻辑。

最后,我们可以得出结论,C语言“函数”与数学“函数”有相似的概念,但是处理的信息却比数学函数多得多。

本文为原创,欢迎转发。

欢迎关注作者微博与微信号:C语言编程技术分享

C语言中的函数与数学上的函数很类似的更多相关文章

  1. C语言中如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  2. 如何在c语言中源文件调用另一个源文件的函数

    在源文件A1.c中调用A2.c 中的函数有两种方法: 1.在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如:在A2.c中:有函数void A2(){...};在 ...

  3. [R]在dplyr函数的基础上编写函数-(3)tidyeval

    dplyr的优点很明显,数据框操作简洁,如filter(df, x == 1, y == 2, z == 3)等于df[df$x == 1 & df$y ==2 & df$z == 3 ...

  4. C语言中几个常用数学计算函数ceil(), floor(), round()的用法

    最近在实现算法的过程中,遇到了使用几个数学计算函数,感觉挺有意思,就记下来 方便以后使用. ceil(x)返回不小于x的最小整数值(然后转换为double型). floor(x)返回不大于x的最大整数 ...

  5. C语言中常用的string.h的字符函数

    strcmp 字符串比较函数 原型: int strcmp(char *str1, char *str2); 例子: ) printf("buffer 1 is greater than b ...

  6. Python 基础语法——数字和表达式(包含数学上的一些函数)

    >>> 2+2 4 >>> 1/2 0 >>> 1.0/2.0 0.5 >>> 1/2.0 0.5 >>> 1 ...

  7. Verilog语言中的系统任务和系统函数

    Verilog语言中预先定义了一些任务和函数,用于完成一些特殊的功能,它们被称为系统任务和系统函数,这些函数大多数都是只能在Testbench仿真中使用的,使我们更方便的进行验证. `timescal ...

  8. 在C语言中利用PCRE实现正则表达式

    1. PCRE简介 2. 正则表达式定义 3. PCRE正则表达式的定义 4. PCRE的函数简介 5. 使用PCRE在C语言中实现正则表达式的解析 6. PCRE函数在C语言中的使用小例子 1. P ...

  9. C语言中存储类别又分为四类:自动(auto)、静态(static)、寄存器的(register)和外部的(extern)。

    除法运算中注意: 如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2:而两数中有一个为小数,结果则为小数,如:9.0/2 = 4.500000. 取余运算中注意: 该运算只适 ...

随机推荐

  1. Objective

    1.NSSet 1.是一个无序的,管理多个对象的集合类,最大特点 是集合中不允许出现重复对象,和数学上的集合含义是一 样的 2.除了无序.不许重复之外,其它功能和NSArray是一样的 2.NSArr ...

  2. generate eml file

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  3. SQLServer 远程服务器不存在,未被指定为有效的发布服务器,或您无权查看可用的发布服务器

    原文:SQLServer 远程服务器不存在,未被指定为有效的发布服务器,或您无权查看可用的发布服务器 创建了事务发布,在初始化时出现错误,查看相关代理信息如下: 日志读取器代理错误: 状态: 0,代码 ...

  4. QT 那些事

    一直做的是windows开发,有2个小项目想做到手机.看来看去,选择了QT.本文介绍自己的学习的一些心得,希望对你有帮助.1.选择QT2.安卓的一些事3.QML调用C++4.资源集成(比较有用,网上资 ...

  5. char、char*、char**数组(有图,非常清楚)good

    平时都用的是char数组,基本忘记了char*数组和char**数组该怎么用了 char s1[10]; s1[0] s1[1]等都是char s1是char*,等同于&s1[0] char* ...

  6. web.congfig 禁用 ViewState Session

    <!--禁用 ViewState Session--> <pages enableViewState="false" enableSessionState=&qu ...

  7. 高可用的zookeeper

    Install zookeeper wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13 ...

  8. C#爬虫与反爬虫--字体加密篇

    爬虫和反爬虫是一条很长的路,遇到过js加密,flash加密.重点信息生成图片.css图片定位.请求头.....等手段:今天我们来聊一聊字体: 那是一个偶然我遇到了这个网站,把价格信息全加密了:浏览器展 ...

  9. Java基础(三) String深度解析

    String可以说是Java中使用最多最频繁.最特殊的类,因为同时也是字面常量,而字面常量包括基本类型.String类型.空类型. 一. String的使用 1. String的不可变性 /** * ...

  10. RocketMQ(1)-架构原理

    RocketMQ(1)-架构原理 RocketMQ是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ的特点是纯JAVA实现:集群和HA实现相对简单:在发生宕机和其它故障时消息丢失率更低. ...