什么是C语言函数

int max(a,b)

int a,b;

{

if (a>b) return a;

else return b;

}

第一行说明max函数是一个整型函数,其返回的函数值是一个整数。形参为a,b。第二行说明a,b均为整型量。 a,b 的具体值是由主调函数在调用时传送过来的。在{}中的函数体内, 除形参外没有使用其它变量,因此只有语句而没有变量类型说明。 上边这种定义方法称为“传统格式”。 这种格式不易于编译系统检查,从而会引起一些非常细微而且难于跟踪的错误。ANSI C 的新标准中把对形参的类型说明合并到形参表中,称为“现代格式”。

例如max函数用现代格式可定义为:

int max(int a,int b)

{

if(a>b) return a;

else return b;

}

现代格式在函数定义和函数说明(后面将要介绍)时, 给出了形式参数及其类型,在编译时易于对它们进行查错, 从而保证了函数说明和定义的一致性。例1.3即采用了这种现代格式。 在max函数体中的return语句是把a(或b)的值作为函数的值返回给主调函数。有返回值函数中至少应有一个return语句。 在C程序中,一个函数的定义可以放在任意位置, 既可放在主函数main之前,也可放在main之后。例如例1.3中定义了一个max 函数,其位置在main之后, 也可以把它放在main之前。

修改后的程序如下所示。

int max(int a,int b)

{

if(a>b)return a;

else return b;

}

void main()

{

int max(int a,int b);

int x,y,z;

printf("input two numbers:\n");

scanf("%d%d",&x,&y);

z=max(x,y);

printf("maxmum=%d",z);

}

现在我们可以从函数定义、 函数说明及函数调用的角度来分析整个程序,从中进一步了解函数的各种特点。程序的第1行至第5行为max函数定义。进入主函数后,因为准备调用max函数,故先对max函数进行说明(程序第8行)。函数定义和函数说明并不是一回事,在后面还要专门讨论。 可以看出函数说明与函数定义中的函数头部分相同,但是末尾要加分号。程序第12 行为调用max函数,并把x,y中的值传送给max的形参a,b。max函数执行的

结果 (a或b)将返回给变量z。最后由主函数输出z的值。

函数调用的一般形式前面已经说过,在程序中是通过对函数的调用来执行函数体的,其过程与其它语言的子程序调用相似。C语言中, 函数调用的一般形式为:

函数名(实际参数表) 对无参函数调用时则无实际参数表。 实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。 各实参之间用逗号分隔。'Next of Page在C语言中,可以用以下几种方式调用函数:

1.函数表达式

函数作表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如: z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。'Next of Page

2.函数语句

函数调用的一般形式加上分号即构成函数语句。例如: printf ("%D",a);scanf ("%d",&b);都是以函数语句的方式调用函数。

3.函数实参

函数作为另一个函数调用的实际参数出现。 这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如: printf("%d",max(x,y)); 即是把max调用的返回值又作为printf函数的实参来使用的。在函数调用中还应该注意的一个问题是求值顺序的问题。 所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。 对此, 各系统的规定不一定相同。在3.1.3节介绍printf 函数时已提

到过,这里从函数调用的角度再强调一下。 看例5.2程序。

void main()

{

int i=8;

printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);

}

如按照从右至左的顺序求值。例5.2的运行结果应为:

8

7

7

8

如对printf语句中的++i,--i,i++,i--从左至右求值,结果应为:

9

8

8

9

应特别注意的是,无论是从左至右求值, 还是自右至左求值,其输出顺序都是不变的, 即输出顺序总是和实参表中实参的顺序相同。由于Turbo C现定是自右至左求值,所以结果为8,7,7,8。上述问题如还不理解,上机一试就明白了。函数的参数和函数的值

一、函数的参数

前面已经介绍过,函数的参数分为形参和实参两种。 在本小节中,进一步介绍形参、实参的特点和两者的关系。 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

函数的形参和实参具有以下特点:

1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。

2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。

4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。例5.3可以说明这个问题。

c语言max函数是什么,什么是C语言函数相关推荐

  1. R语言max函数min函数计算各种数据对象最大值最小值实战

    R语言max函数min函数计算各种数据对象最大值最小值实战 目录 R语言max函数min函数计算各种数据对象最大值最小值实战 #基本语法

  2. c语言定义小数无穷小,OC中常用的数学函数以及浮点处理函数

    在编程中我们总要进行一些数学运算以及数字处理,尤其是浮点数的运算和处理,这篇文章主要介绍C语言下的数学库.而其他语言中的数学库函数的定义以及最终实现也是通过对C数学库的调用来完成的,其内容大同小异,因 ...

  3. c语言1000内亲密对数,《C语言程序的设计上机指导》项目五函数及其应用.pptx

    <C语言程序的设计上机指导>项目五函数及其应用.pptx 项目五 函数及其应用 本章重点 文本 C语言程序结构. 函数定义与函数声明. 函数的调用. 变量的存储属性. 任务一 关于函数应用 ...

  4. 函数(详解)——C语言

    Hello,友友们前段时间忙拖更了这么久,趁着五一假期好好卷上一波哈哈哈.好的,我们本期主要对C语言中的函数进行讲解. 1.什么是函数 在数学中也常常用到函数,但你对C语言中的函数有了解吗? 在C语言 ...

  5. 函数<小罗爱c语言>

    #include <stdio.h> #include <string.h>int a = 10; int b = 20; int max = 0;int getmax(int ...

  6. C语言编程>第七周 ⑧ 请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中。

    例题:请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中.二维数组中的数己在主函数中赋予. ...

  7. C语言return的用法详解,C语言函数返回值详解。 (本次转载仅供学习,感谢原创!!转发自C语言中文网,如有侵权请私信本人删除)

    C语言return的用法详解,C语言函数返回值详解 转载:http://c.biancheng.net/view/1855.html 函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这 ...

  8. C语言return的用法详解,C语言函数返回值详解

    函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过 return 语句返回. return 语句的一般形式为: return 表达式; 或者: return (表达式); 有 ...

  9. 编写C语言的最简单小程序Hello world和函数使用

    编写C语言的最简单小程序Hello world 一.示例一 1.编写demo.c程序 #include<stdio.h> int main() {printf("Hello wo ...

  10. c语言函数中使用指针变量,C语言函数指针变量

    C语言函数指针变量 导语:在C语言中规定,一个函数总是占用一段连续的内存区, 而函数名就是该函数所占内存区的首地址. 这就是函数指针变量.下面是相关介绍,仅供参考! 在C语言中规定,一个函数总是占用一 ...

最新文章

  1. html特殊字符的html,js,css写法汇总
  2. 文件描述符fd、文件指针fp和vfork()
  3. Web服务初探:用Demo学Web服务系列(7)——XML的相关知识
  4. 针对以下需求提供一个解决方案:在卡牛-信用卡管家APP里面,我们的用户需要一个寻找 附近银行网点/ATM 的功能
  5. 乘风破浪:LeetCode真题_010_Regular Expression Matching
  6. 支持医学研究的Apple开源移动框架
  7. java 开源im_开源IM项目-InChat登录接口设计与实现(基于Netty)
  8. linux的shell版url爬虫
  9. STM32F103_study43_The punctual atoms(STM32 Echo experiment based on serial communication )
  10. JavaScript 每日一题 #10
  11. 游戏技能一:激光扫射的实现【CocosCreator 2D】【TypeScript】
  12. grep搜索特定文件
  13. 消防气体灭火系统(一)
  14. 解决Unknown column ‘xxx‘ in ‘where clause‘问题!!(泪的教训!!)
  15. 网络游戏架构与微服务架构简单对比
  16. 趣谈 DHCP 协议,有点意思。
  17. 知云文献翻译跨页内容选中翻译操作
  18. 窗函数设计FIR滤波器
  19. 企业与员工间的相互认同
  20. 2017中国最好学科排名出炉:计算机科学与技术排名 北大没进前三?

热门文章

  1. L298N——简介及用法
  2. cad图层置顶的lisp_CAD图层遮挡,如何将CAD图形进行前置或者后置?
  3. 看看淘宝的工程师如何评论12306
  4. PTA 乙级 【1007】素数对猜想
  5. 怎么讲bpm文件读入Matlab,bpm Matlab环境下基于期望传播算法的贝叶 类器工 238万源代码下载- www.pudn.com...
  6. 导数、微分、偏导数、全微分、方向导数、梯度的定义与关系
  7. 单片机机器周期怎么计算公式_单片机机器周期的计算
  8. 服务器2003系统安装时蓝屏,安装2003server操作系统蓝屏是怎么回事?
  9. 我的团长我的团第十四集
  10. 我的团长我的团第四十三集