一.函数的定义:

函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数。例如:scanf(),printf()为库函数,cylinder(),fact()为自定义函数。

函数定义的一般形式:

函数类型 函数名 (形式参数表)   /*函数首部*/

{

函数实现过程                     /*函数体*/

}

  1. 函数首部:由函数类型,函数名和形式参数表组成。函数首部后边不能加分号,他和函数体一起构成完整的函数定义。
  2. 函数的调用:任何的C语言执行,首先从主函数main()开始,如果遇到某个函数调用,主函数将暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的位置继续执行。
  3. 函数调用过程:

Main() 函数运行到:

Volume=cylinder(radius,height);时,调用cylinder()函数,暂停main()函数,将变量radius和height的值传给形参r和h。

计算机转到执行cylinder()函数,形参r和h接受变量radius和height的值。

函数cylinder()执行“return result”,结束函数运行,带着函数的结果result,返回到main()函数的调用他的地方。

计算机从先前的位置继续执行,将返回值赋给变量volume,输出体积。

例:

Double cylinder (double r,doubke h)

(double result;’

Result=3.14*r*r*h;

Return result;

}

  1. 函数的调用:
  2. 主函数就像一个控制面板,子函数就像控制面板上的按钮。
  3. 每个子函数可以实现一定的功能。
  4. 子函数可以减少重复编写程序段的工作量。
  5. 同一个子函数可以被一个或者多个函数多次调用。
  6. 函数使用说明:
  7. C程序是由一个或多个函数组成。
  8. C程序总是从main函数开始执行,而不管将其写在前边中间还是后边,在调用完其他函数后返回main函数。
  9. 子函数相互独立,可以互相调用,但是子函数不可调用主函数。
  10. 函数的分类
  11. 从用户角度看C语言函数分为两类:库函数 用户自定义函数
  12. 从形式上分为两类:

无参函数:不需要向函数传递参数。Printstar()

有参函数:需要向函数传递必要的参数。Cylinder(r,h) max(a,b)

  1. 从函数有无返回值看,分为两类:

有返回值函数:函数经过运算,得到一个明确的结果,并需要回送该结果。Cylinder(r,h)

Mac(a,b)

无返回值参数:函数只是完成一系列操作步骤,不需要回送任何运算结果。Printstar() printmessage()

  1. 类型标识符:

函数的类型,与return语句返回值的类型相同。可以理解为函数最终结果的类型;可以是任何一种有效的类型,却省时默认为整形。若函数无返回值,类型标识符为(void)

  1. 函数名:他的命名要符合c语言的标识符命名规则,由字母,数字和下划线组成,其中第一个字符必须是字母或下划线。

函数名必须唯一,不能与函数体内变量或形参名相同。

  1. 形参:在定义函数时,函数名后面括号中的变量名。形参是变量,必须指定类型。

形参主要是用于接受主函数传递过来的数值,形参类型必须与传递过来的数据类型一致。

形参的命名:只要符合变量的命名规则即可,无需与主函数中的变量名一致。每个形参必须单独说明类型,形参间用逗号间隔。

如果函数无需从主函数处接收数据,则可以不带形参,但是圆括号不能省。

  1. 函数参数传递说明:
  2. 实参可以是常量,变量,表达式。但必须有确定的值。
  3. 形参是变量,必须指定类型。
  4. 在参数传递过程中,实参把值复制给形参。
  5. C语言中,参数的传递是“值传递”,即单项传递。数据只能由实参传递给形参,而不由形参传递给实参。
  6. 形参和实参一一对应,数量一致,类型一致,顺序一致。
  7. 形参在函数被调用前不占内存;函数调用时为形参分配内存,调用结束,内存释放。
  8. Return 的功能:
  9. 结束函数的运行。
  10. 带着运算结果返回主函数。

如果return语句为:return ;则表示仅返回调用函数的调用点,不带返回值。

在一个函数中,return语句可以多次出现,但每次执行职能有一个return语句被执行。

12.函数声明

a.  函数类型 函数名 (参数表)

double cylinder(double r,double h);

  1. 只写函数定义中的第一行(函数首部),并以分号结束。
  2. 函数声明:说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。
  3. 如果是库函数,应在文件开头引用头文件。
  4. 如果被调用函数定义在调用他的函数后边:

应在主调函数中对被调函数作声明。

在所有函数之前对被调函数作声明,此时在主调函数中就不必在作声明了。

  1. 如果被调函数定义在调用他的函数的前边,在主调函数之前可以不加以声明。

C语言总结(5)的更多相关文章

  1. C语言 · 高精度加法

    问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...

  2. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  3. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  4. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  5. C语言 · 字符转对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  6. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  7. Atitit 项目语言的选择 java c#.net  php??

    Atitit 项目语言的选择 java c#.net  php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...

  8. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  9. InstallShield 脚本语言学习笔记

    InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      ...

  10. 用C语言封装OC对象(耐心阅读,非常重要)

    用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...

随机推荐

  1. <转>Spring 知识点提炼

    Spring 知识点提炼 1. Spring框架的作用 轻量:Spring是轻量级的,基本的版本大小为2MB 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依 ...

  2. 为了少点击几次,自己写了一个Chrome插件

    缘由 chrome应用商店有三款二维码插件,自己一直使用的第一款.这三款插件有且只有一个功能就是生成当前页面的URL的二维码. 其实这个功能基本上满足了需要移动端开发在微信里打开页面进行调试的情况. ...

  3. 人脸识别 python调用face++ 功能测试

    使用python调用face++的API,调用detect功能,识别人脸 首先进入face++官网注册,获得API Key和API Secret.使用官网提供的免费python api调用功能,提供了 ...

  4. 安全错误使用CORS在IE10与Node和Express及XMLHttpRequest: 网络错误 0x4c7, 操作已被用户取消

    在IE下:VUE项目,后台替换为https请求之后,vue热更新请求挂起,控制台报错:XMLHttpRequest: 网络错误 0x4c7, 操作已被用户取消.但是chrome与Firefox正常 当 ...

  5. C++内联函数、宏定义和普通函数的区别

    C++内联函数.宏定义和普通函数的区别? 宏定义:在预处理阶段进行简单的文本替换,不会进行参数类型检查: 内联函数:在编译器的时候进行代码插入,编译器会在每次调用内联函数的地方直接将内联函数的内容展开 ...

  6. ctDNA|endosymbiosis

    5.10叶绿体基因组编码多种蛋白质和RNA 叶绿体和线粒体的共同点:叶绿体和线粒体的大小,功能(编码区)大体一致,但叶绿体拥有更多基因,所以在编码tRNA时,也有内含子作为被剪切片段. 因为在原核生物 ...

  7. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

    任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

  8. (转发)IOS动画中的枚举UIViewAnimationOptions

    若本帖转自(博客园·小八究):http://www.cnblogs.com/xiaobajiu/p/4084747.html 可怜目前天朝搜不到什么有价值的东西方便学习,在这里方便初学者. 首先这个枚 ...

  9. 重装vs2008遇到的问题

    由于前几天办公室电脑dhcp服务挂了,wifi网线都上不了网,很无奈只能重装了系统.于是VS2008也要重装,之前一直用的都是前一个同事留下来的软件,没自己装过,自己装的时候踩了坑,记录一下. 重装了 ...

  10. tensorflow目标检测API之建立自己的数据集

    1 收集数据 为了方便,我找了11张月儿的照片做数据集,如图1,当然这在实际应用过程中是远远不够的 2 labelImg软件的安装 使用labelImg软件(下载地址:https://github.c ...